我有一些XML文件,其中定义了多个命名查询,并且一切正常。

问题是我正在做一个更复杂的查询,我想知道是否有可能在我的代码中以字符串格式获取该查询。现在,我从这样的文件中获取查询:

Query query = entityManager.createNamedQuery("CareerPreference.SelectOne", CareerPreference.class);
query.setParameter(EMPLOYEE_ID_PARAMETER_NAME, employeeId);
query.setParameter(STATUS_PARAMETER_NAME, RowStatus.ACTIVE.getNumVal());


因此,我想要做的基本上不是使用createNamedQuery()方法,而是想知道如何从xml文件中获取“ CareerPreference.SelectOne”查询。
为了简洁起见,我将在此处保留省略查询的xml。

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings xmlns="http://java.sun.com/xml/ns/persistence/orm"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
                 http://java.sun.com/xml/ns/persistence/orm_1_0.xsd" version="1.0">

 <named-native-query name="CareerPreference.SelectOne"
                     result-class="com.coreapp.entity.CareerPreference">
        <query>
          **query ommited for brevity**
        </query>
    </named-native-query>

最佳答案

您可以将查询强制转换为Hibernate Query接口:

Query query = entityManager.createNamedQuery("CareerPreference.SelectOne", CareerPreference.class);
org.hibernate.query.Query hibernateQuery = query;


然后调用getQueryString()

String queryString = hibernateQuery.getQueryString();

10-01 08:03
查看更多