【发布时间】:2021-02-05 08:29:30
【问题描述】:
我正在使用带有 Jpa 和 JDK 11 的 Spring Boot 2.2.5,而对于我的数据库,我正在使用 oracle 19c。 我的实体用户和组之间存在多对多关系。 在我的 oracle 数据库中,我有一个带有复合键 (user_ID,group_ID) 的关联 (USER_GROUP) 表。 USER_ID 和 GROUP_ID 在数据库中自动生成。 我想当我在表 USER JPA 中插入用户时也插入关联表 USER_GROUP。 但它返回总是不能在 USER_ID 中插入 null,而且这个用户 id 我没有访问权限,因为它是在数据库中自动生成的。
MyClass 用户组:
@Entity
@Table(name = "USER_GROUP", schema = "TEST", catalog = "")
public class UserGroup {
private GroupUserPK groupUserPK;
private User user;
private Group group;
@EmbeddedId
public GroupUserPK getGroupUserPK() {
return groupUserPK;
}
public void setGroupUserPK(GroupUserPK groupUserPK) {
this.groupUserPK = groupUserPK;
}
@JoinColumn(name = "FK_USER_ID")
@MapsId("fkUserId")
@ManyToOne(fetch = FetchType.LAZY)
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@JoinColumn(name = "FK_GROUP_ID")
@MapsId("fkGroupId")
@ManyToOne(fetch = FetchType.LAZY)
public Group getGroup() {
return group;
}
}
用户组PK
@Embeddable
public class GroupUserPK implements Serializable {
private static final long serialVersionUID = 1L;
private long fkUserId;
private long fkGroupId;
@Column(name = "FK_USER_ID")
@Id
public long getFkUserId() {
return fkUserId;
}
public void setFkUserId(long fkUserId) {
this.fkUserId = fkUserId;
}
@Column(name = "FK_GROUP_ID")
@Id
public long getFkGroupId() {
return fkGroupId;
}
public void setFkGroupId(long fkGroupId) {
this.fkGroupId = fkGroupId;
}
}
我的班级组:
@Entity
@Table(name = "GROUP", schema = "TEST", catalog = "")
public class Group {
private long groupId;
private String nom;
private Collection<UserGroup> userGroup;
@Id
@Column(name = "GROUP_ID")
public long getGroupId() {
return groupId;
}
public void setGroupId(long groupId) {
this.groupId = groupId;
}
@Basic
@Column(name = "DESIGN")
public String getDesign() {
return design;
}
public void setDesign(String design) {
this.design = design;
}
@OneToMany(mappedBy = "group",cascade = {CascadeType.ALL})
public Collection<UserGroup> getUserGroup() {
return userGroup;
}
public void setUserGroup(Collection<UserGroup> userGroup) {
this.userGroup = userGroup;
}
}
我的班级用户
@Entity
@Table(name = "USER", schema = "TEST", catalog = "")
public class User {
private long userId;
private String nom;
private Collection<UserGroup> userGroup;
@Id
@Column(name = "USER_ID")
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
@Basic
@Column(name = "DESIGN")
public String getDesign() {
return design;
}
public void setDesign(String design) {
this.design = design;
}
@OneToMany(mappedBy = "user",cascade = {CascadeType.ALL})
public Collection<UserGroup> getUserGroup() {
return userGroup;
}
public void setUserGroup(Collection<UserGroup> userGroup) {
this.userGroup = userGroup;
}
}
请帮忙。
【问题讨论】:
-
错误是什么?你能提供堆栈跟踪吗?
-
我没有错误,它没有插入关联表“GROUP_USER”
-
表应该是 USER_GROUP 对吧?然后提供用于保存的测试方法
-
好的,谢谢你现在对我有用
-
回答你自己的问题,它可能会帮助别人
标签: java oracle jpa many-to-many