@AttributeOverride注释会破坏多态吗?

时间:2010-02-11 00:40:10

标签: inheritance jpa polymorphism override

我需要JPA继承的帮助

我将举例说明我的问题:

我们有一个Animal类和一个Cat类。

@Entity
@Table(name = "animal")
@DiscriminatorColumn(name="animal_type",columnDefinition="Integer",length=11)
public class Animal implements Serializable{
    @Id
    @GeneratedValue (strategy = GenerationType.IDENTITY)
    @Column(name = "animal_id", nullable = false)
    private Long id;

    ...

}

@Entity
@Table(name = "cat")
@DiscriminatorValue("1")
@AttributeOverride(name="id",column=@Column(name="cat_id"))
public class Cat extends Animal {

    ...

}

如示例所示,我想在cat表中为我的id列使用不同的名称

但是当我尝试执行多态问题询问所有Animal实例时,我得到一个错误。这就像查询无法根据动物实例处理不同的字段名称。

我这样做对吗? 提前谢谢。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用此注释。我举了一个例子

@PrimaryKeyJoinColumn(name="cat_id")
public class Cat extends Animal

答案 1 :(得分:0)

不,我想我不是。

首先我忘记了@Inheritance注释:

@Inheritance(strategy=InheritanceType.JOINED)

无论如何,我看到我可以覆盖其余的字段而不是Id。或者问题是我在查询中使用了id而不是其他字段。

答案 2 :(得分:0)

您必须使用注释@PrimaryKeyJoinColumn