如何在JPA中使用静态变量作为命名本机查询的值



我想在JPA(persistence.xml(文件中使用静态变量作为命名本机查询的查询。

我使用的是Spring boot 2.1.9和hibernate 5.3.12。

我有一个接口:

public interface SqlQueryFacture {
String MEMOIRES_TABLE_BY_FACTURE = "SELECT ......";
}

我想在persistence.xml文件中使用MEMOIRES_TABLE_BY_FACTURE作为值,就像这个一样


<entity-mappings version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm
http://xmlns.jcp.org/xml/ns/persistence/orm_2_2.xsd">
<entity class="fr.pp.entities.factures.Facture">
<named-native-query name="Facture.getMemoiresTableByFactureId" result-set-mapping="MemoireTableRowDtoMapping">
<query>SqlQueryFacture.MEMOIRES_TABLE_BY_FACTURE</query>
</named-native-query>
</entity>
</entity-mappings>

我可以在实体类中不使用@NamedNativeQuery的情况下执行此操作吗?

我猜您正在尝试通过JPA进行动态查询。不幸的是,JPA不支持动态查询。

在JPA(persistence.xml(中无法做到:

<query>SqlQueryFacture.MEMOIRES_TABLE_BY_FACTURE</query>

例如:

<!-- Query takes HQL (Hibernate Query Language) directly -->
<query>SELECT p from Product p</query>

这是允许的。

最新更新