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 才能执行此操作?
答案 0 :(得分: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);