环境搭建这里就跳过了
首先要有两个实体类:
这是就选User和Role,他们之间是多对多的关系
代码如下:
User:
@Data
@Entity
@Table(name = "User")
public class User {
@Id
@GeneratedValue
private Long id;
@Column(name = "created")
private Long created = System.currentTimeMillis();
@Column(name = "username")
private String username;
@ManyToMany(cascade = CascadeType.ALL)
private Set<Role> roles =new HashSet<Role>();
}
Role:
之前和上边一样,使用 lombok插件,但是查询出来显示堆栈溢出,上网搜索后,可以将一方对象里面重写的toString方法去掉,或者两个对象里面重写的toString方法都去掉,在这里,我去掉了
@Entity
@Table(name = "Role")
public class Role {
@Id
@GeneratedValue
private Long id;
@Column(name = "created")
private Long created = System.currentTimeMillis();
@Column(name = "rolename")
private String rolename;
@ManyToMany(cascade = CascadeType.ALL,mappedBy = "roles")
private Set<User> users =new HashSet<User>();
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getCreated() {
return created;
}
public void setCreated(Long created) {
this.created = created;
}
public String getRolename() {
return rolename;
}
public void setRolename(String rolename) {
this.rolename = rolename;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
controller:略
service:略
dao:
@Override public List<Role> findAllRole() { //这里就简单列举了一个左连接 // select 别名 实体类名 别名 left uoter join 实体类中另一张表的集合属性 where 条件 List<Role> roleList = getCurrentSession().createQuery(" select r from Role r left outer join r.users a where a.id=2").list(); return roleList; }