我有一些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();