我需要在現有的Spring Boot 1.2.5應用程序中編寫一些臨時代碼,該代碼將執行一些複雜的SQL查詢。複雜的,我的意思是關於4個不同的表格的單個查詢,並且我有許多這樣的表格。我們都決定使用現有的SQL來降低獲取新查詢錯誤的潛在風險,在這種情況下,這是一個好方法。來自Spring/Hibernate的沒有實體映射的原生SQL?
我的應用程序使用JPA/Hibernate並將一些實體映射到表。從我的研究看來,我似乎需要做很多實體映射。
我試着寫一個只會獲得Hibernate會話對象並執行本機查詢的類,但是當它試圖配置會話工廠時,它拋出一個異常,抱怨它找不到配置文件。
我可以從我的一個現有實體做到這一點,或者至少找到一種方法來獲得已經存在的Hibernate會話嗎?
UPDATE:
這裏是例外,這是非常合情合理的,因爲沒有配置文件找到。它的應用程序在屬性文件中配置。
org.hibernate.HibernateException: /hibernate.cfg.xml not found
at org.hibernate.internal.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:173)
對於它的價值,代碼:
@NamedNativeQuery(NAME = 「verifyEa」,查詢= 「從per_person選擇account_nm其中account_nm =:帳戶名」) 公共類VerifyEaResult { 私人SessionFactory sessionFact = null;
String accountName;
private void initSessionFactory()
{
Configuration config = new Configuration().configure();
ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(config.getProperties()).getBootstrapServiceRegistry();
sessionFact = config.buildSessionFactory(serviceRegistry);
}
public String getAccountName()
{
// Quick simple test query
String sql = "SELECT * FROM PER_ACCOUNT WHERE ACCOUNT_NM = 'lynnedelete'";
initSessionFactory();
Session session = sessionFact.getCurrentSession();
SQLQuery q = session.createSQLQuery(sql);
List<Object> result = q.list();
return accountName;
}
}
分享異常日誌。 – mirmdasif
或者只是使用JDBC ... –
好吧,我發佈了代碼和異常,謝謝。 –