Hibernate 是否可以避免在OneTONE关系中代理主键,并将外键重用为id?
一个实体Hibernate 是否可以避免在OneTONE关系中代理主键,并将外键重用为id?,hibernate,orm,Hibernate,Orm,一个实体ObjDetails是OneToOne关系中的Obj的可选实体 我不认为在ObjDetails中使用代理主键有什么好处,就像官方文档和许多教程中推荐的那样: @Entity public class ObjDetails { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @OneToOne private Obj obj; } 关系是这样的,如果没有Ob
ObjDetails
是OneToOne
关系中的Obj
的可选实体
我不认为在ObjDetails
中使用代理主键有什么好处,就像官方文档和许多教程中推荐的那样:
@Entity
public class ObjDetails {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
@OneToOne
private Obj obj;
}
关系是这样的,如果没有Obj
,就不可能有ObjDetails
Obj
能否用作ObjDetails
中的主键?用什么语法来表达这一点
@Entity
public class ObjDetails {
@Id
@OneToOne
private Obj obj;
}
我们能否避免在ObjDetails
中声明Obj
的对象类型,但从ObjDetails
表达长id
与在Obj
中相同
@Entity
public class ObjDetails {
@Id
@OneToOne
private Long id;
}
以下是官方文件中示例的精简副本:
@Entity
public static class Person {
@Id
private Long id;
}
@Entity
public static class PersonDetails {
@Id
private Long id;
@OneToOne
@MapsId
private Person person;
}
基本部分是保持原语@Id
引用和键入的人
引用均由@OneToOne
标记,最重要的是由@MapsId
标记
它被称为派生标识符。感谢JB指向文档。为什么人们不看文档?