如何解决GenerationValue 不适用于一对一的关系
我有 2 个表:userapp 和 owner,userapp 有用户名作为 ID。两个表的关系是一一对应的,owner pk是userapp的pk,我这样映射这个关系:
UserApp 实体:
@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public class UserApp{
@Id
private String username;
@Column
private String password;
@Column
private String email;
@Column
private String role;
所有者实体:
@Entity
public class Owner extends UserApp{
@Column(unique = true)
@GeneratedValue
private int personId;
@Column
private String name;
@Column
private String address;
@Column
private String neighborhood;
public Owner(String username,String password,String email,String name,String address,String neighborhood) {
super(username,password,email,"owner");
this.name = name;
this.address = address;
this.neighborhood = neighborhood;
}
我正在使用 postgresql,当我看到这些表时,它们被正确创建,当我创建一个所有者时,它也被正确持久化,问题是 personId 列,由于某种原因,@GeneratedValue
不起作用,我意思是,当我尝试创建其他所有者时,出现错误提示关键 personId 已经存在。事实上,hibernate 仍然为所有新所有者创建值为 0 的人 Id,我尝试使用所有 GenerationType 并且仍然有问题
解决方法
你不是这样map a one-to-one in JPA。 你所做的是mapping inheritance,那是不一样的。
我认为您正在寻找的映射是这个:
@Entity
public class UserApp {
@Id
private String username;
@Column
private String password;
@Column
private String email;
@Column
private String role;
}
@Entity
public class Owner {
@Id
private int personId;
@OneToOne
@MapsId
UserApp userApp;
@Column
private String name;
@Column
private String address;
@Column
private String neighborhood;
}
查看 Hibernate ORM 文档中的映射 for one-to-one associations with @MapsId
以了解更多详细信息。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。