Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Hibernate/JPA中使用xml编写命名查询?_Java_Xml_Spring_Hibernate_Jpa - Fatal编程技术网

Java 如何在Hibernate/JPA中使用xml编写命名查询?

Java 如何在Hibernate/JPA中使用xml编写命名查询?,java,xml,spring,hibernate,jpa,Java,Xml,Spring,Hibernate,Jpa,我能够使用使用注释的命名查询,没有任何问题。但是,当我尝试切换到orm.xml文件以实现外部化时,我的应用程序找不到位于classpathMETA-INF目录下的User.orm.xml文件中的命名查询。我的User.orm.xml文件的完整路径是src\main\resources\META-INF\User.orm.xml当我尝试运行查询时,我得到以下异常 java.lang.IllegalArgumentException: No query defined for that name [

我能够使用使用注释的命名查询,没有任何问题。但是,当我尝试切换到orm.xml文件以实现外部化时,我的应用程序找不到位于classpathMETA-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>
我研究了将orm.xml文件保存在模型类所在位置的建议。但这对我不起作用。上面代码中的问题是什么

我还将User.orm.xml文件的映射包含在persistence.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>
User.orm.xml
/META-INF/User.orm.xml
类路径:User.orm.xml
必须在
元素中添加
元素

例如:

User.orm.xml


来源:

是。我已经试过了。我将User.orm.xml包含在类路径和持久性文件中。但是它没有被识别。还有其他想法吗?在persistence.xml中,您需要使用orm.xml的完整路径:com/mycompany/product/package/orm.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>