gpt4 book ai didi

java - EJB 模块中使用实体时出现实体未映射异常

转载 作者:行者123 更新时间:2023-12-01 04:19:12 26 4
gpt4 key购买 nike

我在实体映射方面遇到问题。

这是包含几个模块的 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。

我遇到了这个特殊的异常:

Exception occurred in target VM: org.hibernate.hql.ast.QuerySyntaxException: PgAttrA is not mapped [FROM PgAttrA WHERE ..skiped..] java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: PgAttrA is not mapped [FROM PgAttrA WHERE ..skiped..]

我有一些其他 DAO 在与该实体本身相同的模块中访问该特定实体,它的工作方式就像一个魅力。我只是无法访问该 DAO 的源代码来添加一些新功能。

所以问题是为什么我的 DAO 看不到映射以及我应该如何修复它?

最佳答案

事实上,我刚刚错过了 persistence.xml 中的 jar 文件声明

所以我添加了

<jar-file>../jar_where_persistence_declared.jar</jar-file>

就在

之后
<jta-data-source>DS</jta-data-source>

问题已经解决了

关于java - EJB 模块中使用实体时出现实体未映射异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19133564/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com