2

エンティティ マッピングに問題があります。

これは、いくつかのモジュールを含む JBoss です。そのうちの 1 つには、エンティティ マッピングの注釈が付けられたパッケージが含まれています。

@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 がマップされていません[FROM PgAttrA WHERE ..skiped..]

エンティティ自体と同じモジュールでこの特定のエンティティにアクセスする他のDAOがいくつかあり、それは魅力のように機能します。そのDAOのソースにアクセスして新しい機能を追加することはできません。

問題は、私の DAO がマッピングを認識しない理由と、それを修正するにはどうすればよいかということです。

4

2 に答える 2

0

実際のところ、persistence.xml の jar ファイル宣言を見逃してしまいました

だから私は追加しました

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

すぐ後

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

そして問題はなくなりました

于 2013-10-02T10:24:16.673 に答える