【问题标题】:JPA - java.lang.IllegalArgumentException: Not an entity: classJPA - java.lang.IllegalArgumentException:不是实体:类
【发布时间】:2018-09-01 22:47:48
【问题描述】:

我的 Java 代码有一个奇怪的问题。

我面临以下异常:

java.lang.IllegalArgumentException:不是实体:类

请注意,我有一个persistence.xml,其中列出了我的实体。 我的实体有 @Entity 注释。

当我这样做时:

final Query q = entityManager.createQuery("from " + className + " c");  
q.getResultList().iterator(); 

它会返回结果。

但是当我这样做时:

// pType is Class<T> 
final TypedQuery<T> queryAll = entityManager.createQuery(query.select(query.from(pType))); 
return queryAll.getResultList(); 

它返回我上面的异常。

你有什么想法吗?

【问题讨论】:

  • 什么是pType?它是一个包含MyClassName.class 之类的字符串吗?确保.class 不在其中。
  • 正如我在 sn-p 中提到的,“pType 是 Class 类型”

标签: java hibernate jpa osgi entitymanager


【解决方案1】:

我的persistence.xml中出现了类似你的错误,但我没有添加类实体,请检查你的问题是否是这个。 persistence.xml 中的示例

<persistence-unit name="PERSISTENCE" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
    <class>CLASSE_ENTITY</class>
</persistence-unit>

【讨论】:

    【解决方案2】:

    当给定类尚未添加到 Hibernate 配置时,可能会出现此问题。

    一种添加方式

    new org.hibernate.cfg.Configuration()
          .addProperties(properties)
          .addAnnotatedClass(MyEntity.class)
    

    【讨论】:

      【解决方案3】:

      检查您的 Hibernate 和 Spring versions 是否兼容。我有同样的问题,我已经更改了 Hibernate 和 Spring 版本,问题已经消失了。

      【讨论】:

        猜你喜欢
        • 2012-04-15
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        • 2016-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多