2012-09-25 68 views
2

我想從Oracle數據庫的兩個表中獲取一些數據。 我定義了使用註釋的類MyEntity(定義類時,只使用@Entity而不使用@Table)。這個實體的休眠看起來像下面的代碼:未能提取休眠默認架構

public List<MyEntity> getAll() { 
    return oracleSessionFactory.getCurrentSession() 
      .createSQLQuery("SELECT a.column1, a.column2, b.column1" + 
        "FROM A_table a JOIN B_table b " + 
        "ON a.column1 = b.column1") 
      .addEntity(MyEntity.class).list(); 
} 

我已經設置了hibernate的默認模式屬性。 default_property在持久性文件的數據源中。然而,這不符合這樣的錯誤工作:

java.sql.SQLException: ORA-00942: table or view does not exist

當我剛剛加入我的硬編碼到SQL查詢類似下面的程序工作正常。

"SELECT a.column1, a.column2, b.column1 FROM myschema.A_table a JOIN myschema.B_table b ON a.column1 = b.column1"

怎樣才能使我的計劃,拿起默認設置?

回答

0

添加註釋您的實體:

@Table(schema="myschema") 
+0

它失敗,出現同樣的錯誤增加。 –

0

試試這個在hibernate.cfg.xml文件

<property name="hibernate.hbm2ddl.auto">update</property> 
+0

失敗,出現同樣的錯誤。 –

+0

檢查是您註釋爲@Entity的類「MyEntity」的名稱與數據庫中的表的名稱相同? – dusmanka

+0

「MyEntity」類僅包含兩個現有表所需的選擇字段。對應表不存在。但是,當我在hibernate的'List getAll()'方法的sql查詢中添加模式名稱時,它可以工作。這是有線點。 –