0
我有兩個類:如何強制EclipseLink爲InheritanceType.JOINED策略中的子類創建列?
@Entity
@Table(name="a_table")
@Inheritance(strategy= InheritanceType.JOINED)
@DiscriminatorColumn(name="jdoclass", length=255)
public abstract class A {
@Id
@Column(name="id")
private int id;
@Column(name="other_id")
private int otherID;
public A(){
}
...
}
@Entity
@Table(name="b_table", uniqueConstraints = @UniqueConstraint(columnNames = {"other_id", "different_id"}))
public class B extends A {
@Column(name="other_id")
private int otherID;
@Column(name="different_id")
private int differentID;
public B() {
}
...
}
當的EclipseLink創建SQL,它從B類省略otherID場和DB該字段不會創建列。即使我在B類中更改了列名,列仍然未被創建。
這很容易理解 - 父類中存在相同的字段。
但由於某些原因,我真的需要創建這個列(其中之一是我需要把它放在UniqueConstraint表中)。
我發現了一個解決方案:在類B中更改「otherID」字段名稱。然後列創建正確。但我想避免更改此字段的名稱,並將此解決方案視爲最終解決方案。
是否有其他解決方案來強制創建此列?
我肯定會使用另一個字段名,因爲這一個從超隱藏的領域。你將如何創建一個JPQL查詢來搜索'A.otherID'或'B.otherID'? –
可以說我不想搜索otherID。此外,它爲OpenJPA工作。現在我想讓它在EclipseLink中工作:) – pzak
如果你不想搜索它,這個字段在類之外是完全不可見的。所以它的名字應該不重要。這只是一個私人領域。你爲什麼在乎? –