我有下面的场景,我需要子类能够指定在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(){
.....
}
}发布于 2013-12-09 01:11:37
在这种情况下,@AssociationOverride将帮助您。请参阅它的documentation (当然,它是一个JPA注释)。您可以将其与@AttributeOverrides注释结合使用,以覆盖基本类型。示例(取自示例):
@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 {
...
}https://stackoverflow.com/questions/20455935
复制相似问题