Java 重写JPA MappedSuperClass泛型属性
我有下面的场景,我需要子类能够指定在MappedSuperClass中找到的属性的实际类型。我使用hibernate作为提供程序,我不介意使用特定于hibernate的注释来解决这个问题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
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 {
...
}