0

hibernate 有没有办法根据 *.hbm.xml 文件中的属性选择查询?

例如,如果我的MyHibernateFile.hbm.xml中有两个查询,例如:

<sql-query name="myQuery_1">
    <return-scalar column="idTable1" type="string"/>
    <return-scalar column="descTable1" type="string"/>
    SELECT DISTINCT ID_TABLE AS IDTABLE1, DESC_TABLE AS DESCTABLE1
    FROM ${databaseSchema}.TABLE1
</sql-query>

<sql-query name="myQuery_2">
    <return-scalar column="idTable2" type="string"/>
    <return-scalar column="descTable2" type="string"/>
    SELECT DISTINCT ID_TABLE AS IDTABLE2, DESC_TABLE AS DESCTABLE2
    FROM ${databaseSchema}.TABLE2
</sql-query>

假设我在我的 java 项目中设置了属性databaseType,如果我的属性 ${databaseType} 等于“DB2”,我可以选择第一个查询,如果 ${databaseType} 等于“ORACLE”,我可以选择第二个查询吗?我如何修改MyHibernateFile.hbm.xml才能做到这一点?

4

1 回答 1

1

我不这么认为。但是您可以在 DAO 层的代码中使用该条件:

String queryName = null;
if (databaseType.equals("DB2")) {
   queryName= "myQuery_1";
else if (databaseType.equals("ORACLE")) {
   queryName = "myQuery_2";
}
Query q = session.createNamedQuery(queryName);
于 2013-07-17T11:29:48.973 回答