hibernate多表之间的HQL语句查询

环境搭建这里就跳过了

 

首先要有两个实体类:

这是就选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;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值