我有两个或更多的桌子彼此相似。
PARENT
ID | PK
NAME | VARCHAR
CHILD
ID |PK
NAME | VARCHAR
AGE | INT
这不是@Inheritance
情况,因为它们是独立实体,并且@OneToMany
或@ManyToOne
彼此相关。
我为彼此创建实体类。
@Entity
public class Parent {
@Id
private Long id;
private String name;
@ManyToOne(mappedBy = "parent")
private Collection<Child> children;
}
@Entity
public class Child {
@Id
private Long id;
private String name;
private int age;
@OneToMany
private Parent parent;
}
有没有很好的方法来共享公共字段映射?
// @MappedSuperclass // is this what it is exactly for?
public abstract class Base {
// @Id protected Long id; // @@?
@Column(name = "name", nullable = false)
private String name;
}
@Entity
public class Parent extends Base {
@Id
@TableGenerator(...)
@GeneratedValue(...)
protected Long id;
@ManyToOne(mappedBy = "parent")
private Collection<Child> children;
}
@Entity
public class Child extends Base {
@Id
@TableGenerator(...)
@GeneratedValue(...)
protected Long id;
private int age;
@OneToMany
private Parent parent;
}
这样可以吗?
甚至可以在基础上声明@Id protected Long id;
,在@TableGenerator
和@GeneratedVAlue
上扩展课程吗?
答案 0 :(得分:2)
有没有很好的方法来共享公共字段映射?
MappedSuperclass是完全正确的工具。
甚至可以声明@Id protected Long id;在基地 将@TableGenerator和@GeneratedVAlue留在扩展类上?
不,这是不可能的。