如何根据属性区分Hibernate中的两个查询?

时间:2013-07-17 11:20:37

标签: java database hibernate

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 才能执行此操作?

1 个答案:

答案 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);