我可以使用注释来使用命名查询而不会出现任何问题。但是,当我尝试切换到 orm.xml 文件以外部化我的应用程序时,无法找到我在{class>}文件下的命名查询 META-INF 目录。我的User.orm.xml
文件的完整路径是User.orm.xml
当我尝试运行查询时,我得到以下异常,
src\main\resources\META-INF\User.orm.xml
java.lang.IllegalArgumentException: No query defined for that name [READ_ALL_USERS]
[artifact:mvn] at org.hibernate.jpa.spi.AbstractEntityManagerImpl.buildQueryFromName(AbstractEntityManagerImpl.java:788)
下的 persistence.xml
看起来像这样,
src/main/resources/META-INF
我的 <?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
version="2.0">
<persistence-unit name="webPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<class>com.spring.model.User</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/spring?zeroDateTimeBehavior=convertToNull"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" />
<property name="hibernate.connection.username" value="root"/>
<property name="hibernate.connection.password" value="password"/>
</properties>
</persistence-unit>
</persistence>
文件具有以下命名查询
User.orm.xml
我查看了this question,它建议将orm.xml文件保存在模型类所在的位置。但它对我不起作用。上面的代码有什么问题。
我还在我的persistence.xml中包含了User.orm.xml文件的映射,该文件已经存在于META-INF目录下的类路径中。我尝试了以下文件映射,但没有一个检测到我的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_2_0.xsd" version="2.0">
<named-query name="READ_ALL_USERS">
<query>SELECT user from com.spring.User user</query>
</named-query>
</entity-mappings>
答案 0 :(得分:1)
您必须在<mapping-file>
元素中添加<persistence-unit>
元素。
实施例:
<persistence-unit>
<mapping-file>User.orm.xml</mapping-file>
</persistence-unit>
来源:https://docs.jboss.org/hibernate/entitymanager/3.5/reference/en/html/configuration.html