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指向文档。

为什么人们不看文档?