Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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 无法使用persistence.xml持久化到sql server数据库_Java_Jpa - Fatal编程技术网

Java 无法使用persistence.xml持久化到sql server数据库

Java 无法使用persistence.xml持久化到sql server数据库,java,jpa,Java,Jpa,我是java新手。我正在尝试将我的应用程序连接到计算机上的SQL server数据库,但出现以下错误: javax.persistence.PersistenceException:No Persistence provider for EntityManager named Sub: The following providers: oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider oracle.toplin

我是java新手。我正在尝试将我的应用程序连接到计算机上的SQL server数据库,但出现以下错误:

javax.persistence.PersistenceException:No Persistence provider for EntityManager named Sub:     The following providers:
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider
oracle.toplink.essentials.PersistenceProvider
Returned null to createEntityManagerFactory.
我的persistence.xml是:

    <?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
    <persistence-unit name="Application">
     <provider>
        oracle.toplink.essentials.PersistenceProvider
    </provider>

    <class>com.application.entity.ProductEntity</class>

    <properties>
        <property name="toplink.jdbc.url"value="jdbc:sqlserver://localhost:1433;databaseName=Application"/>
        <property name="toplink.jdbc.user" value="sa"/>
        <property name="toplink.jdbc.password" value="Infosys1"/>
        <property name="toplink.jdbc.driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"/>
    </properties>



</persistence-unit>
我已经在java构建路径和webcontent的lib文件夹中包含了以下JAR:

  • sqljdbc4-2.0.jar
  • toplink-essentials-agent.jar
  • toplink-essentials.jar
  • 我的persistence.xml路径是\Application\src\META-INF\persistence.xml


    请帮帮我。提前感谢。

    persistence.xml
    中,您应该有如下内容:

    <persistence-unit name="myPersistenceUnit">
    

    在您的情况下,代码中有
    “Sub”
    ,文件中有
    “Application”
    ;代码希望创建一个名为“Sub”的持久化提供程序,但未定义该名称,因此出现错误消息:
    没有名为Sub的EntityManager的持久化提供程序

    我将持久化单元名称更改为“Sub”,但得到相同的错误尝试添加
    事务类型=“RESOURCE\u LOCAL”
    在持久化单元中,所以它是
    我按照您的建议尝试的。但是得到了同样的错误。然后你要么缺少依赖项(我没有使用TopLink),要么
    persistence.xml
    (或一些JAR)不在类路径上;如果您使用的是Maven,它应该位于src下的
    resources
    目录no中。实际上,我可以使用以下代码连接数据库:String dbURL=“jdbc:sqlserver://localhost\\sqlexpress”;字符串user=“sa”;字符串pass=“Infosys1”;conn=DriverManager.getConnection(dbURL、user、pass);但无法通过persistence.xml进行连接。我没有使用maven。这个问题与数据库无关,它可能与JPA没有在类路径上找到persistence.xml或单元有关。persistence.xml需要位于类路径上classes目录根目录下的meta inf目录中。如果您认为可以在类路径上找到它,请将TopLink logging属性设置为FINEST,以便记录问题:
    <persistence-unit name="myPersistenceUnit">
    
    Persistence.createEntityManagerFactory("myPersistenceUnit");