【问题标题】:problem with open jpa打开jpa的问题
【发布时间】:2011-01-03 08:57:18
【问题描述】:

我在使用 open jpa 时在控制台上出现以下错误。可能的原因是什么?我无法发布代码,因为它违反了我的公司政策。

[12/31/10 14:54:13:279 GMT+05:30] 00000063 MetaData      W   CWWJP9991W: openjpa.MetaData: Warn: OpenJPA cannot map field "abc.xyz" efficiently.  It is of an unsupported type. The field value will be serialized to a BLOB by default.
[12/31/10 14:54:13:295 GMT+05:30] 00000063 MetaData      W   CWWJP9991W: openjpa.MetaData: Warn: The class "pqr.xyz" listed in the openjpa.MetaDataFactory configuration property could not be loaded; ignoring.
[12/31/10 14:54:13:295 GMT+05:30] 00000063 MetaData      W   CWWJP9991W: openjpa.MetaData: Warn: OpenJPA cannot map field "pqr.xyz" efficiently.  It is of an unsupported type. The field value will be serialized to a BLOB by default.

 Failed to create Bundle in DB:
                                 <openjpa-1.2.2-SNAPSHOT-r422266:778978M-OPENJPA-975 fatal user error> org.apache.openjpa.persistence.ArgumentException: Field "abc.xyz" cannot declare that it is mapped by another field. Its mapping strategy (org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy) does not support mapping by another field.
    at org.apache.openjpa.jdbc.meta.strats.AbstractFieldStrategy.assertNotMappedBy(AbstractFieldStrategy.java:59)
    at org.apache.openjpa.jdbc.meta.strats.HandlerFieldStrategy.map(HandlerFieldStrategy.java:71)
    at org.apache.openjpa.jdbc.meta.FieldMapping.setStrategy(FieldMapping.java:121)
    at org.apache.openjpa.jdbc.meta.RuntimeStrategyInstaller.installStrategy(RuntimeStrategyInstaller.java:80)
    at org.apache.openjpa.jdbc.meta.FieldMapping.resolveMapping(FieldMapping.java:454)
    at org.apache.openjpa.jdbc.meta.FieldMapping.resolve(FieldMapping.java:419)
    at org.apache.openjpa.jdbc.meta.ClassMapping.resolveNonRelationMappings(ClassMapping.java:879)
    at org.apache.openjpa.jdbc.meta.MappingRepository.prepareMapping(MappingRepository.java:339)
    at org.apache.openjpa.meta.MetaDataRepository.preMapping(MetaDataRepository.java:662)
    at org.apache.openjpa.meta.MetaDataRepository.resolve(MetaDataRepository.java:549)
    at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:308)
    at org.apache.openjpa.meta.MetaDataRepository.getMetaData(MetaDataRepository.java:363)
    at org.apache.openjpa.kernel.QueryImpl.classForName(QueryImpl.java:1569)
    at org.apache.openjpa.kernel.ExpressionStoreQuery$1.classForName(ExpressionStoreQuery.java:108)
    at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getClassMetaData(JPQLExpressionBuilder.java:168)
    at org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.resolveClassMetaData(JPQLExpressionBuilder.java:139)
    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.compile(QueryImpl.java:574)
    at com.xyz.ws.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:105)
    at com.xyz.ws.persistence.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:37)
    at com.xyz.ws.jpa.management.JPATxEmInvocation.createNamedQuery(JPATxEmInvocation.java:116)
    at com.xyz.ws.jpa.management.JPAEntityManager.createNamedQuery(JPAEntityManager.java:302)

【问题讨论】:

  • 我首先要弄清楚为什么 pqr.xyz 无法加载。也许您的环境缺少一些依赖项;也许类名在某处拼写错误;也许运行 OpenJPA 的类加载环境不合适。

标签: jpa openjpa


【解决方案1】:

我刚刚解决了这样的错误。这个错误非常具有误导性。问题是我忘记将实体放入persistence.xml 文件中。

【讨论】:

    【解决方案2】:

    我遇到了同样的问题。

    信息不清楚!

    解决我的问题的方法是在实体对象及其pk对象中实现equals()hashCode()

    还要查看class 是否在内部声明 persistence.xml

    希望对某人有所帮助。

    【讨论】:

    • 为我工作。谢谢。
    【解决方案3】:

    我会猜测(最好我可以不看代码)你与另一个你没有用@ManyToOne、@OneToMany 或类似注释注释的类有关系。

    【讨论】:

      猜你喜欢
      • 2013-01-13
      • 2019-04-04
      • 2015-02-23
      • 2011-05-29
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2016-06-27
      相关资源
      最近更新 更多