当我尝试创建EntityManager时,出现以下异常:

java.lang.SecurityException:类“javax.persistence.PersistenceUtil”的签名者信息与同一包中其他类的签名者信息不匹配

也许与javax.persistence包有关,但是我不知道该如何解决。

    public static EntityManager getEntityManager() {
    if(emf == null) {
        emf = Persistence.createEntityManagerFactory("AccountsManager");
    }
    return emf.createEntityManager();
}

这是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="AccountsManager" transaction-
                                  type="RESOURCE_LOCAL">
    <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>model.Account</class>
    <class>model.AllSubscription</class>
    <class>model.Client</class>
</persistence-unit>

我发现了类似的问题,但没有找到任何解决方案。

最佳答案

阅读完所有可能的类似主题后,我就知道了。

在当前版本的eclipselink(2.7.4)中,如果将jakarta.persistence_2.2.2.jar与eclipselink.jar一起添加,则会发生此问题。这两个罐子都有一些具有相同名称的类和包。为了解决此问题,您必须在eclipselink.jar之前添加jakarta.persistence_2.2.2.jar。因此,所有 class 都是部分来自雅加达。

我不完全理解这两个库之间如何交互,但是替换构建路径中的顺序会有所帮助。

关于java - Eclipselink类“javax.persistence.PersistenceUtil”的签名者信息与同一包中其他类的签名者信息不匹配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56577987/

10-11 01:13