hibernate TableA,TableB连表加锁查询返回 tableA,再对TableB进行加锁查询无效的解决方法。由于postgresql数据库只对查询返回内容进行加锁,所以后面对TableB进行加锁的时候已经晚了,防不住了,所以要解决此问题,只需查询的时候返回两张表的数据。原来的hql语句如下:
String hql = "select t from TableA as t,TableB as p WHERE t.bookCode = p.bookCode";
需要新增一个model并实现Serializable,如下:
public class BookVO implements Serializable {
//tableA 主键
private String treeCode;
// tableB 主键
private String bookCode;
//get,set方法不要忘了写
}
修改后的hql语句如下:
String hql = "select new com.ybm.dongzhou.module.vo.BookVO (t.id.treeCode,p.id.bookCode) from TableA as t,TableB as p WHERE t.bookCode = p.bookCode "; 这样写查询时加锁就能同时锁住两张表满足的数据了。关键点:返回结果一定要返回需要锁数据的结果。