我有两节课:
@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”字段名称。然后正确创建列。但我想避免更改此字段的名称,并威胁将此解决方案作为最终解决方案。
是否有其他解决方案可以强制创建此列?