JPA - java.lang.IllegalArgumentException:不是实体:class

时间:2018-03-23 09:44:51

标签: java hibernate jpa osgi entitymanager

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

我面临以下例外:

  

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

请注意,我有一个persistence.xml,其中列出了我的entites。 我的entites有@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(); 

它返回上面的例外情况。

你有什么想法吗?

3 个答案:

答案 0 :(得分:0)

在我的persistence.xml中,我遇到了类似您的错误,但是我没有添加类实体,请检查您的问题是否是此。 persistence.xml中的示例

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

答案 1 :(得分:0)

当给定的类尚未添加到Hibernate配置中时,可能会发生此问题。

使用的一种添加方式

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

答案 2 :(得分:0)

检查您的 Hibernate 和 Spring versions 是否兼容。我遇到了同样的问题,虽然我更改了版本,但问题消失了。