JPA @MappedSuperclass在Eclipse中的单独JAR中

Rya*_*anC 4 java eclipse entity jpa mappedsuperclass

我有一个@MappedSuperclass AbstractEntity,我用于所有@Entity类.只要超类与我的实体在同一个Eclipse项目中,它就可以完美地工作.但是因为我在几个项目中重用了这个超类,所以我只想把它分解成自己的JAR文件.当我这样做(当然我将JAR文件添加到构建路径中)时,Eclipse会在我的每个@Entity类上给出错误:

实体没有定义主键属性.

Eclipse突出显示@Entity注释作为错误的来源.当然,所有类都继承自此AbstractEntity.两个项目中的包名称相同.JAR项目具有所有必需的构建路径 - 包含AbstractEntity的JAR文件项目中没有错误.

当我将它部署到我的应用服务器(JBoss 7.1)时,它工作正常.这让我觉得它只是一个错误地识别错误的Eclipse问题.

抽象实体:

package com.xyc.abc;

import java.io.Serializable;

import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.MappedSuperclass;

@MappedSuperclass
public abstract class AbstractEntity implements Serializable {

private static final long serialVersionUID = 1L;

private Long id;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}
}
Run Code Online (Sandbox Code Playgroud)

简单实体类示例:

 @Entity
 public class TestEntity extends AbstractEntity {
 ...
 }
Run Code Online (Sandbox Code Playgroud)

我已经看到一些其他帖子说问题可能是超类中的注释是在getter而不是在字段上 - 如果你的实体中没有其他JPA注释,这只是一个问题,我这样做.有任何想法吗?

Rya*_*anC 9

看起来这与此处描述的错误有关:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=361042

最终修复它(更多的是一种解决方法)是在包含我的实体的项目中添加AbstractEntity类列表persistence.xml.即使AbstractEntity它位于一个单独的JAR并且本身不是具体的实体,我想这给了Eclipse足够的信息来阻止抱怨.这似乎没有对应用程序本身产生任何不利影响.