Java 如何设置;mappedBy“;在实体的子类中?

Java 如何设置;mappedBy“;在实体的子类中?,java,hibernate,jpa,Java,Hibernate,Jpa,我想将现有的JPA实体拆分为POJO超类和实体子类。我想将POJO超类放入一个库项目中,该项目可以被其他不使用JPA的项目引用 我的旧代码/现有代码成功声明了一个OneToMany关系,如下所示: @Entity public class Person { @OneToMany(mappedBy="petOwner") public List<Pet> pets = new ArrayList<>(); } @Entity @Access(AccessT

我想将现有的JPA实体拆分为POJO超类和实体子类。我想将POJO超类放入一个库项目中,该项目可以被其他不使用JPA的项目引用

我的旧代码/现有代码成功声明了一个OneToMany关系,如下所示:

@Entity
public class Person {
    @OneToMany(mappedBy="petOwner")
    public List<Pet> pets = new ArrayList<>();
}
@Entity
@Access(AccessType.PROPERTY)
public class JpaPerson extends CommonPerson {

    @OneToMany(mappedBy="petOwner")
    public List<Pet> getPets() {
        return pets;
    }

    public void setPets(List<Pet> pets) {
        this.pets = pets;
    }

}

我正在使用Hibernate JPA api 2.1。

谢谢@petros splinakis

我现在用的是这样的东西:

@Entity
public class Person {
    @OneToMany(mappedBy="petOwner")
    public List<Pet> pets = new ArrayList<>();
}
@Entity
@Access(AccessType.PROPERTY)
public class JpaPerson extends CommonPerson {

    @OneToMany(mappedBy="petOwner")
    public List<Pet> getPets() {
        return pets;
    }

    public void setPets(List<Pet> pets) {
        this.pets = pets;
    }

}
@实体
@访问权限(AccessType.PROPERTY)
公共类JpaPerson扩展了普通人{
@OneToMany(mappedBy=“petOwner”)
公共列表getPets(){
归还宠物;
}
公共宠物(列出宠物){
这个。宠物=宠物;
}
}

它就像一个符咒

如果在MappedSuperclass方法中使用@瞬态注释,则可以在同一方法的子类中使用任何其他JPA注释。因此,您可以在子类中“扩展”JPA注释。

实际上从未尝试过,但如果您重写getter并对其进行注释,它应该会起作用。请记住,如果您计划混合字段和属性访问类型,则需要使用@access annotation指定。