java - 为什么我不能重写和注释实体映射的 getter 方法?

标签 java hibernate jpa eclipselink mappedsuperclass

鉴于此类:

@MappedSuperclass
public abstract class AbstractEntity {

    int id;
    public void setId(int id) { this.id = id; }
    public int getId() { return id; }

    // other mappings
}

我想定义一个实体:

@Entity
public class SomeEntity extends AbstractEntity {

    @Override
    @Id // or @OneToOne etc.
    public int getId() { return id; }
}

但是失败并显示“未指定标识符” (或“无法确定类型”)SomeEntity 上的错误。如果我从父类(super class)中删除 setter/getter ,它就会起作用。我不能执行此覆盖策略吗?为什么不,或者如果是的话 - 如何?

添加

@AttributeOverride(name = "id", column = @Column(name = "ID"))

到子类中不改变错误。

最佳答案

要创建实体类,该类必须满足一些要求。前任。必须有一个公共(public)/私有(private)构造函数。

以下是要求列表:

http://docs.oracle.com/javaee/5/tutorial/doc/bnbqa.html

希望这有帮助。

关于java - 为什么我不能重写和注释实体映射的 getter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44414461/

相关文章:

Spring Data JPA PageRequest 按 Map 值属性排序

java - 如何在 JPQL 中嵌套聚合函数

java - Android - 如何让Tor服务使用Socket进行DNS解析?

java - 从映射的 XML 文件中排除 java 字段

java - hibernate以主键作为外键的双向关联

java - 读取架构错误 : Could not get list of tables rom database. 可能是 JDBC 驱动程序

hibernate - JPA 2.0 多对多与额外列 - 更新集合

java - WebSphere 8.5.5数据库层(带参数调用函数或jpa中的select)

java - 使用java运行时(在Windows机器上)将Linux命令发送到Linux服务器

java - KNIME:比较一列是否包含另一列的子集