我遇到了实体映射的问题。
这是包含几个模块的 JBoss,其中一个包含带有注释的实体映射的包
@Entity
@Table(name = "PG_ATTR_A")
public class PgAttrA
// declaration omitted
}
在单独的包和单独的 EJB 模块中,我有一个 DAO 来访问这些数据
@Stateless
@Clustered
public class PgAttrDao implements PgAttrDaoLocal, PgAttrDaoRemote {
@PersistenceContext (unitName = "Persistence_Unit")
EntityManager entityManager;
public List<PgAttrA> find(...) {
Query query = entityManager.createQuery("FROM PgAttrA WHERE ..skiped..");
// set some parameters, skipped
return query.getResultList();
}
}
persistence.xml 的内容 http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
<persistence-unit name="Persistence_Unit" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>DS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.DB2Dialect"/>
<property name="hibernate.cache.use_second_level_cache" value="false"/>
<property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
</properties>
</persistence-unit>
问题是 DAO 似乎不知道 PgAttr 类中声明的 ORM。
我有这个特殊的例外:
目标 VM 中发生异常:org.hibernate.hql.ast.QuerySyntaxException:PgAttrA 未映射 [FROM PgAttrA WHERE ..skiped..] java.lang.IllegalArgumentException:org.hibernate.hql.ast.QuerySyntaxException:PgAttrA 未映射[来自PgAttrA ..跳过..]
我有一些其他的 DAO 在与实体本身相同的模块中访问这个特定的实体,它就像一个魅力。我只是无法访问该 DAO 的来源来添加一些新功能。
所以问题是为什么我的 DAO 看不到映射,我应该怎么做才能修复它?