【问题标题】:Implementing EntityManager Compile errors实现 EntityManager 编译错误
【发布时间】:2015-11-07 22:02:33
【问题描述】:

我正在创建一个 AuditableEntityManager,它将 json 消息放入路由到 ELK 集群的 JMS 队列中以进行审计。

大多数实现只是通过,所以例如我有

EntityManager entityManager_ = null;

public AuditableEntityManagerImpl(String name, 
                                PersistenceProperty [] properties, 
                                SynchronizationType synchronization,
                                PersistenceContextType type,
                                String unitName)
{
  //TODO - Figure out how to configure the rest of the properties
  entityManager_ = Persistence.createEntityManagerFactory(name).createEntityManager();
}

而且大多数方法看起来像

@Override
public <T> T find(Class<T> entityClass, Object primaryKey)
{
  return entityManager_.find(entityClass, primaryKey);
}

除了具有待办事项块的可变方法外,我将在其中放置审计解析器

@Override
public void remove(Object entity)
{
  entityManager_.remove(entity);
  //TODO - LOG to audit
}

我允许 eclipse 从界面中填充缺失的方法,并且在 IDE 中所有方法都是绿色的。但是,当我尝试构建(使用 maven)时,我收到一堆错误,指出无法找到大部分 javax.peristence 内容,并且 EntityManager 中不存在许多方法。我已经刷新了我的 .m2/repository 以确保其中没有损坏,但没有运气。

错误堆栈如下,为长度道歉。任何想法将不胜感激。

[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[6,25] cannot find symbol
  symbol:   class EntityGraph
  location: package javax.persistence
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[16,25] cannot find symbol
  symbol:   class StoredProcedureQuery
  location: package javax.persistence
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[17,25] cannot find symbol
  symbol:   class SynchronizationType
  location: package javax.persistence
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[20,34] cannot find symbol
  symbol:   class CriteriaDelete
  location: package javax.persistence.criteria
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[22,34] cannot find symbol
  symbol:   class CriteriaUpdate
  location: package javax.persistence.criteria
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[31,37] cannot find symbol
  symbol:   class SynchronizationType
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[194,28] cannot find symbol
  symbol:   class CriteriaUpdate
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[200,28] cannot find symbol
  symbol:   class CriteriaDelete
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[242,10] cannot find symbol
  symbol:   class StoredProcedureQuery
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[248,10] cannot find symbol
  symbol:   class StoredProcedureQuery
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[254,10] cannot find symbol
  symbol:   class StoredProcedureQuery
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[260,10] cannot find symbol
  symbol:   class StoredProcedureQuery
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[326,14] cannot find symbol
  symbol:   class EntityGraph
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[332,10] cannot find symbol
  symbol:   class EntityGraph
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[338,10] cannot find symbol
  symbol:   class EntityGraph
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[344,19] cannot find symbol
  symbol:   class EntityGraph
  location: class psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManager.java:[14,25] cannot find symbol
  symbol:   class SynchronizationType
  location: package javax.persistence
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManager.java:[24,3] cannot find symbol
  symbol:   class SynchronizationType
  location: @interface psu.edu.javaee.audit.producer.AuditableEntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManager.java:[24,49] cannot find symbol
  symbol:   variable SynchronizationType
  location: @interface psu.edu.javaee.audit.producer.AuditableEntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[200,16] createQuery(CriteriaDelete) in psu.edu.javaee.audit.producer.AuditableEntityManagerImpl cannot implement <T>createQuery(javax.persistence.criteria.CriteriaQuery<T>) in javax.persistence.EntityManager
  return type javax.persistence.Query is not compatible with javax.persistence.TypedQuery<T>
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[182,16] name clash: createQuery(java.lang.String) in psu.edu.javaee.audit.producer.AuditableEntityManagerImpl overrides a method whose erasure is the same as another method, yet neither overrides the other
  first method:  <T>createQuery(javax.persistence.criteria.CriteriaQuery<T>) in psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
  second method: createQuery(CriteriaDelete) in psu.edu.javaee.audit.producer.AuditableEntityManagerImpl
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[241,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[244,26] cannot find symbol
  symbol:   method createNamedStoredProcedureQuery(java.lang.String)
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[247,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[250,26] cannot find symbol
  symbol:   method createStoredProcedureQuery(java.lang.String)
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[253,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[256,26] cannot find symbol
  symbol:   method createStoredProcedureQuery(java.lang.String,java.lang.Class[])
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[259,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[262,26] cannot find symbol
  symbol:   method createStoredProcedureQuery(java.lang.String,java.lang.String[])
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[271,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[274,26] cannot find symbol
  symbol:   method isJoinedToTransaction()
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[325,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[328,26] cannot find symbol
  symbol:   method createEntityGraph(java.lang.Class<T>)
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[331,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[334,26] cannot find symbol
  symbol:   method createEntityGraph(java.lang.String)
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[337,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[340,26] cannot find symbol
  symbol:   method getEntityGraph(java.lang.String)
  location: variable entityManager_ of type javax.persistence.EntityManager
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[343,3] method does not override or implement a method from a supertype
[ERROR] /home/shawn/git/auditable-entity-manager/auditable-entity-manager-common/src/main/java/psu/edu/javaee/audit/producer/AuditableEntityManagerImpl.java:[346,26] cannot find symbol
  symbol:   method getEntityGraphs(java.lang.Class<T>)
  location: variable entityManager_ of type javax.persistence.EntityManager

【问题讨论】:

  • Eclipse 使用 JPA 2.1 注释,而您的 maven 构建可能使用没有新类的 JPA 1.0 jars
  • 你说得对,克里斯,谢谢。不幸的是,我的工具集也给了我不好的信息。

标签: jpa entitymanager java-ee-7


【解决方案1】:

Bad archetype = bad pom + eclipse 显示 javaee-api 版本 1.7,但 1.6 在类路径上。清理绒球对其进行了分类。

【讨论】:

    【解决方案2】:

    我遇到了类似的问题。我试图使用entityManager.getEntityGraph("mygraph"),但 Eclipse 给了我错误,“方法 getEntityGraph 未定义类型 EntityManager”。

    为了解决这个问题,我从 pom.xml 中删除了一个依赖项。我有以下两个,我删除了底部的。

    <dependency>
      <groupId>org.hibernate.javax.persistence</groupId>
      <artifactId>hibernate-jpa-2.1-api</artifactId>
      <version>1.0.2.Final</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.persistence</groupId>
      <artifactId>javax.persistence</artifactId>
      <version>2.0.0</version>
    </dependency>
    

    【讨论】:

      猜你喜欢
      • 2016-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多