Java 重写JPA MappedSuperClass泛型属性

Java 重写JPA MappedSuperClass泛型属性,java,hibernate,jpa,Java,Hibernate,Jpa,我有下面的场景,我需要子类能够指定在MappedSuperClass中找到的属性的实际类型。我使用hibernate作为提供程序,我不介意使用特定于hibernate的注释来解决这个问题 @MappedSuperclass abstract class BaseA{ .... @OneToMany(mappedBy = "baseA") public Set<? extends BaseB> getBaseB(){ ..... } } @Map

我有下面的场景,我需要子类能够指定在MappedSuperClass中找到的属性的实际类型。我使用hibernate作为提供程序,我不介意使用特定于hibernate的注释来解决这个问题

@MappedSuperclass
abstract class BaseA{
   ....

   @OneToMany(mappedBy = "baseA")
   public Set<? extends BaseB> getBaseB(){
      .....
   }
}

@MappedSuperclass
abstract class BaseB{
   .....

   @ManyToOne(optional = false)
   @JoinColumn(name = "basea_id")
   public BaseA getBaseA(){
      .....
   }
}

@Entity
class BaseAImpl extends BaseA{
    public Set<BaseBImpl> getBaseB(){
      .....
   }
}

@Entity    
class BaseBImpl{

   public BaseAImpl getBaseA(){
      .....
   }
}
@MappedSuperclass
抽象类BaseA{
....
@OneToMany(mappedBy=“baseA”)

在这种情况下,公共集
@AssociationOverride
将为您提供帮助。有关它的详细信息,请参见注释(当然它是JPA注释)。您可以将它与
@AttributeOverrides
注释结合使用以覆盖基本类型。示例(取自示例):


它不支持重写targetEntity,或者我错了吗?你能给我一个例子吗?添加了一个例子。不,你不能更改targetEntity,因为你是自动检测的(你在你的集合中使用泛型)。
@MappedSuperclass
public class Employee {
    ...
    @ManyToOne
    protected Address address;
    ...
}

@Entity 
@AssociationOverride(name="address", 
                         joinColumns=@JoinColumn(name="ADDR_ID"))
    // address field mapping overridden to ADDR_ID foreign key
public class PartTimeEmployee extends Employee {
    ...
}