我正在使用JPA 2.0和EclipseLink 2.2.0。多個@MappedSuperclass
我有一個@MappedSuperclass,AbstractEntity,這是我所有的實體提供PK和審計列的基礎。
我希望有另一個@MappedSuperclass繼承了該類,併成爲根的TABLE_PER_CLASS繼承策略。
目前,在使用Maven構建時,我會收到標題錯誤。
在繼承層次結構中是否允許多個@MappedSuperclass?
我正在使用JPA 2.0和EclipseLink 2.2.0。多個@MappedSuperclass
我有一個@MappedSuperclass,AbstractEntity,這是我所有的實體提供PK和審計列的基礎。
我希望有另一個@MappedSuperclass繼承了該類,併成爲根的TABLE_PER_CLASS繼承策略。
目前,在使用Maven構建時,我會收到標題錯誤。
在繼承層次結構中是否允許多個@MappedSuperclass?
在繼承層次允許多個@MappedSuperclass?
是,我已經這樣做了。爲了能夠回答你關於Maven的錯誤問題,你必須提供一個堆棧跟蹤和代碼..
多個映射超被允許在同一個繼承層次。它不是直接說所以在規格,但JPA 2.0規範沒有明確禁止多個映射超類,而在其它上下文中,指的是區分具有多個映射在同一層次超類:
實體的默認接入類型層級由映射註釋在實體 類別和的映射超級的實體層級的映射超級上的 確定,其不明確指定訪問類型。
這意味着你可以做如下:
@MappedSuperclass
public class FirstMapped {
String firstVal;
}
@MappedSuperclass
public class SecondMapped extends FirstMapped {
String secondVal;
}
@Entity
public class ExtendingEntity extends SecondMapped {
@Id int id;
}
映射超不能繼承實體的根。實體繼承的根必須是實體,如documentation中所述。使用EclipseLink將@Inheritance添加到上面示例中映射的超類之一中時,會被忽略。將@Inheritance添加到ExtendingEntity按預期工作 - 它成爲實體繼承層次結構的根。
一般映射超只允許映射的重用,他們不是實體繼承的一部分。
如果不回答你的問題,這將有助於如果你能分享這些「標題錯誤」。
對於我在JPA 2.1和休眠5.2.12.Final(使用與彈簧引導2.0.0.M7)不起作用。 – 2018-01-30 14:28:05