JPA 多对多关联查询

来源:互联网 发布:js数组concat 编辑:程序博客网 时间:2024/06/01 17:57

假设有两张表user和goods,中间表为user_goods.
JPA定义

User类:

@ManytoMany(cascade={CascadeType.PERSIST,CascadeType.REFRESH,CascadeType.MERGE)@JoinTable(name="user_goods",joinColumns={@JoinColumn(name="user_id",referencedColumnName="user_id")},inverseJoinColums={@JoinColumn(name="goods_id",referencedColumnName="goods_id")}private Set<Goods> goods=new HashSet<Goods>();

Goods 类
如果goods能不参与表的维护。那么定义为:

@ManyToMany(mappedBy="goods")private Set<User> users=new HashSet<User>();

如果参与维护,那么定义与User类相同。

关联查询:

String hql="select user, goods from User user join user.goods goods where user.user_id='xxxx'";List<Object[]> list=userDao.getUserGoods(hql);for(Object[] object:list){    User user=(User)object[0];    Goods goods=(Goods)object[1];    ...}   

select 也可以如下:

select user.username,..., goods.goodtype... from User user join user.goods goods where user.user_id='xxxx'"

以上是内联模式,其他模式同理。
本人新手,方法性能可能比较差,如果更好的办法,烦请告知。

0 0