【发布时间】:2021-07-05 01:22:40
【问题描述】:
我试图做 @ManyToMany 关联,当我尝试做类似的关系时它起作用了
用户可以有多个组,一个组可以有多个用户..它可以工作,并且hibernate会自动基于它创建自定义表并完成它的工作。后来我不得不在关联表中添加更多列,所以我按照一篇文章进行了设置,效果很好。
我正在使用 SpringBoot 并且正在使用 SpringDataJPA
这是我的实现:
@Entity
@Table(name = "USERS")
public class User {
@Id
@GeneratedValue
private long id;
private String username;
private String password;
private String email;
@OneToMany(mappedBy = "user")
private Set<UserGroup> userGroups = new HashSet<UserGroup>();
}
@Entity
@Table(name = "GROUPS")
public class Group {
@Id
@GeneratedValue
private long id;
private String name;
@OneToMany(mappedBy = "group")
private Set<UserGroup> userGroups = new HashSet<UserGroup>();
}
@Entity
@Table(name = "USERS_GROUPS")
public class UserGroup {
@Id
@GeneratedValue
private long id;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "USER_ID")
private User user;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "GROUP_ID")
private Group group;
// additional fields
private boolean activated;
private Date registeredDate;
}
User user = new User("tommy", "ymmot", "tommy@gmail.com");
Group group = new Group("Coders");
User persistedUser = userRepository.save(user);
Group persistedGroup = groupRepositry.save(group);
UserGroup userGroup = new UserGroup();
userGroup.setGroup(persistedGroup);
userGroup.setUser(persistedUser);
userGroup.setActivated(true);
userGroup.setRegisteredDate(new Date());
userGroupRepository.save(userGroup);
现在如何编写一个 SpringData 等价的方法名来获取用户的 用户活跃的组?即我让用户活跃=假 有人从组中删除用户,而不是从中删除条目 user_group 关联表。
我们可以在 userRepository 上做吗?
【问题讨论】:
标签: java spring-boot hibernate spring-data-jpa many-to-many