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();
}

我已经设置了休眠的默认模式属性。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",

我怎样才能让我的程序选择默认设置?

4

2 回答 2

0

试试这个添加到 hibernate.cfg.xml 文件中

<property name="hibernate.hbm2ddl.auto">update</property> 
于 2012-09-25T12:39:25.333 回答
0

为您的实体添加注释:

@Table(schema="myschema")
于 2012-09-25T11:07:27.667 回答