我有一个 @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;
}
}
简单实体类示例:
@Entity
public class TestEntity extends AbstractEntity {
...
}
我已经看到其他一些帖子说问题可能是超类中的注释在 getter 上而不是在字段上 - 如果您的实体中没有其他 JPA 注释,这只是一个问题,我这样做了。有任何想法吗?