您的位置:首页 > 其它

hibernate 多对多注解配置及实体属性条件查询

2015-01-07 15:04 495 查看
以下是通过hibernate注解的方式写的多对多关系用户和角色实体,即一个用户有多个角色,一个角色下也有多个用户。
普通属性作为条件查询相信那么简单大家都会了,如下是一个关系实体作为查询条件的小例子。

用户和角色的多对多配置如下:
@Entity
public class UserInfo {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
private String no;
private String name;
private int age;
private Date createDate;

@ManyToMany(fetch=FetchType.EAGER)
private Set<RoleInfo> roles;

public Integer getId() {
return id;
}

public void setId(Integer id) {
this.id = id;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public Set<RoleInfo> getRoles() {
return roles;
}

public void setRoles(Set<RoleInfo> roles) {
this.roles = roles;
}

public String getNo() {
return no;
}

public void setNo(String no) {
this.no = no;
}

public Date getCreateDate() {
return createDate;
}

public void setCreateDate(Date createDate) {
this.createDate = createDate;
}

}


角色实体如下:
@Entity
public class RoleInfo {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "RoleInfo [id=" + id + ", name=" + name + "]";
}

}
现在要查询角色名叫“管理员的”用户
查询代码如下:
@Test
public void testQueryRelation(){
Session session=sessionFactory.getCurrentSession();
Criteria criteria =session.createCriteria(UserInfo.class);
//关联关系查询
criteria.createCriteria("roles").add(Restrictions.like("name", "管理员"));
System.out.println(criteria.list());
System.out.println(criteria.list().size());
}


本文出自 “Coder随手记-技术分享” 博客,请务必保留此出处http://viphyy.blog.51cto.com/6403455/1600199
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: