假设有两张表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'"
以上是内联模式,其他模式同理。
本人新手,方法性能可能比较差,如果更好的办法,烦请告知。