我有这个简单的User
实体:
@Entity
@Table(name = "fdei_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String login;
}
我想创建一个包含字段UserDetail
和id
的第二个表property1
。
在第二个表UserDetail
中我不想生成增加的id,但我希望字段id
与表{{1}中用户的id
相同我希望当我获取UserDetail id = 1时,也会获取id = 1的User实体。
User
我怎么能意识到这一点? 我试过@OneToOne,@ PrimaryKeyJoinColumn,@ MatsId ......但没有......我总是有错误。
什么是正确的方式?
非常感谢, 安德烈
答案 0 :(得分:2)
@Id
字段和关系(User user
)字段。@MapsId
的使用情况,以确保详细信息表中只有一个关键字段。 我添加了这个答案,因为评论中发布的所有消息都没有引用@MapsId
@Entity
@Table(name = "fdei_user_details")
public class UserDetails {
@Id
@Column(name = "id", updatable = false, nullable = false)
private Long id;
@MapsId
@OneToOne
@JoinColumn(name = "id", referencedColumnName = "id")
private User user;
private Boolean property1;
// getters and setters
}
答案 1 :(得分:0)
@Entity
@Table(name = "fdei_user_details")
public class UserDetails {
@Id
@MapsId
@OneToOne
@JoinColumn(name = "id")
private User user;
private Boolean property1;
// getters and setters
}
您可以在映射本身(JPA 2.0)上注释@Id