2010-10-12 27 views
4

我在尝试执行简单的JPA 1.0代码时遇到以下异常。 可能是什么原因?JPA 1.0错误:该名称不是公认的实体或标识符。已知实体名称:[]

5453 DevPQRWDPBSSPersist WARN [P=351601:O=0:CT] openjpa.Enhance - This configuration disallows runtime optimization, but the following listed types were not enhanced at build time or at class load time with a javaagent: "[class com.XYZ.PQR.bss.client.db.data.markerentry, class com.XYZ.PQR.bss.client.db.data.Serviceproduct, class com.XYZ.PQR.bss.client.db.data.Agreementterms, class com.XYZ.PQR.bss.client.db.data.Offeringattribute, class com.XYZ.PQR.bss.client.db.data.marker, class com.XYZ.PQR.bss.client.db.data.OfferingpriceadjustmentrelPK, class com.XYZ.PQR.bss.client.db.data.Serviceoffering, class com.XYZ.PQR.bss.client.db.data.Offeringassociation, class com.XYZ.PQR.bss.client.db.data.OfferingpriceserviceofferingrelPK, class com.XYZ.PQR.bss.client.db.data.Offer, class com.XYZ.PQR.bss.client.db.data.Offeringpriceadjustmentrel, class com.XYZ.PQR.bss.client.db.data.Offeringfamily, class com.XYZ.PQR.bss.client.db.data.Offeringpriceserviceofferingrel, class com.XYZ.PQR.bss.client.db.data.Serviceproductattribute, class com.XYZ.PQR.bss.client.db.data.Offeringprice, class com.XYZ.PQR.bss.client.db.data.Agreement]". 
6563 DevPQRWDPBSSPersist TRACE [P=351601:O=0:CT] openjpa.jdbc.SQL - <t 1183336072, conn 944453707> executing prepstmnt 152307988 SELECT so.* from DB2INST1.SERVICEOFFERING so where so.ISDELETED = 0 and so.id in (select oa.SERVICEOFFERINGID from DB2INST1.OFFERINGATTRIBUTE oa where oa.SERVICEOFFERINGID = so.id AND oa.name = ? and oa.STRINGVALUE = ? and oa.ISDELETED = 0) [params=(String) productbundleid, (String) attrValue] 
7281 DevPQRWDPBSSPersist TRACE [P=351601:O=0:CT] openjpa.jdbc.SQL - <t 1183336072, conn 944453707> [718 ms] spent 
Exception in thread "P=351601:O=0:CT" <openjpa-1.2.1-SNAPSHOT-r422266:686069 nonfatal user error> org.apache.openjpa.persistence.ArgumentException: An error occurred while parsing the query filter "SELECT OBJECT(attr) FROM Offeringattribute attr WHERE attr.serviceofferingid IN (:OfferingIds) AND attr.isdeleted = 0". Error message: The name "Offeringattribute" is not a recognized entity or identifier. Known entity names: [] 
at org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.parseException(AbstractExpressionBuilder.java:118) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:180) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:150) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:225) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateMetaData(JPQLExpressionBuilder.java:195) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getCandidateType(JPQLExpressionBuilder.java:188) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.access$600(JPQLExpressionBuilder.java:69) 
at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder$ParsedJPQL.populate(JPQLExpressionBuilder.java:1756) 
at org.apache.openjpa.kernel.jpql.JPQLParser.populate(JPQLParser.java:56) 
at org.apache.openjpa.kernel.ExpressionStoreQuery.populateFromCompilation(ExpressionStoreQuery.java:153) 
at org.apache.openjpa.kernel.QueryImpl.newCompilation(QueryImpl.java:658) 
at org.apache.openjpa.kernel.QueryImpl.compilationFromCache(QueryImpl.java:639) 
at org.apache.openjpa.kernel.QueryImpl.compileForCompilation(QueryImpl.java:605) 
at org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java:667) 
at org.apache.openjpa.kernel.QueryImpl.getOperation(QueryImpl.java:1492) 
at org.apache.openjpa.kernel.DelegatingQuery.getOperation(DelegatingQuery.java:123) 
at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:243) 
at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:293) 
at com.XYZ.PQR.bss.client.offering.impl.OfferingServiceImpl.getOfferingsByStringAttribute(OfferingServiceImpl.java:661) 
at com.XYZ.PQR.bss.marker.impl.testAks.testAPI(testAks.java:38) 
at com.XYZ.PQR.bss.marker.impl.testAks.main(testAks.java:24) 

    <properties> 

<property name="openjpa.ConnectionDriverName" value="com.XYZ.db2.jcc.DB2Driver"/> 
    <property name="openjpa.ConnectionURL" value="jdbc:db2://xyz.com:50000/ABC"/> 
    <property name="openjpa.ConnectionUserName" value="usr"/> 
    <property name="openjpa.ConnectionPassword" value="pwd"/> 
    <property name="openjpa.jdbc.Schema" value="sch123"/> 
    <property name="openjpa.Log" value="SQL=TRACE" /> 

</properties> 
+1

您使用哪个应用服务器?我认为应用程序没有完全部署,因为它不是JPA上下文中的实体。粘贴完整的堆栈跟踪。 – iddqd 2010-10-12 13:05:43

+0

感谢您的回复。我已发布整个堆栈跟踪 – akp 2010-10-12 13:16:22

+0

它是独立应用程序吗? – iddqd 2010-10-12 13:47:07

回答

0

阅读本非常carefuly http://openjpa.apache.org/build-and-runtime-dependencies.html

你必须geronimo- *库添加到您的项目,如果是独立的应用程序。

+0

我使用了相同类型的代码来连接到其他数据库。但是在连接到这一个。数据库都是DB2。 – akp 2010-10-12 14:11:31

+0

是否存在persistent.xml的一些问题。我已经在原始文章 – akp 2010-10-12 14:12:20

+0

中对persistent.xml的配置进行了配置首先,使用Derby代替db2进行测试。如果您熟悉maven,请参阅本教程http://log.illsley.org/2010/05/15/openjpa-derby-and-getting-started-fast/。 – iddqd 2010-10-12 14:20:22

4

跟踪的第一行警告您,您的实体在构建时或在类加载时未使用javaagent进行增强。

虽然我的理解是,正在运行的增强并不要求不严格,跟踪的以下部分仍是一个暗示,OpenJPA的是不知道的任何实体

Error message: The name "Offeringattribute" is not a recognized entity or identifier. Known entity names: []

它看起来就像有些事情出错了和/或OpenJPA没有使用任何fallback mechanisms。在日志中查找以前的警告。或者设置构建时间增强。

以下资源可能有帮助:

0

我用传统的JPA 1.0网页间歇性地遇到此问题应用。这是由于在实体增强之前发生的请求。

如果有的话还是坚持了一个JPA 1.0应用,并间歇性地遇到此问题,尝试添加下列到persistence.xml

<property name="openjpa.MetaDataRepository" value="Preload=true" />

从打开JPA文件,第6.2章:Metadata Repository

Preload: A boolean property. If true, OpenJPA will eagerly load the repository on EntityManagerFactory creation. As a result, all Entity classes will be eagerly loaded by the JVM. Once MetaData preloading completes, all locking is removed from the MetaDataRepository and this will result in a much more scalable repository. If false, the repository will be lazily loaded as Entity classes are loaded by the JVM. The default value is false.

此选项不适用于openjpa-1.2.1(2009),但在openjpa-1.2.3发布时(2013年)推出。

相关问题