- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我可以毫无问题地使用带注释的命名查询。但是当我尝试切换到 orm.xml 文件以外部化我的应用程序时,找不到我的命名查询,它位于类路径 下的 User.orm.xml
文件中META-INF 目录。我的 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
文件有以下命名查询,
<?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>
我看着 this question这建议将 orm.xml 文件保留在模型类所在的位置。但这对我不起作用。上面的代码有什么问题。
我还在我的 persistence.xml 中包含了映射 User.orm.xml 文件,它已经在我的 META-INF 目录下的类路径中。我尝试了以下文件映射,但没有一个检测到我的 xml 文件,
<mapping-file>User.orm.xml</mapping-file>
<mapping-file>/META-INF/User.orm.xml</mapping-file>
<mapping-file>classpath:User.orm.xml</mapping-file>
最佳答案
您必须添加 <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
关于java - 如何在 Hibernate/JPA 中使用 xml 编写命名查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32051598/
我是一名优秀的程序员,十分优秀!