生成HT表时的Hibernate继承更新问题

时间:2018-11-27 19:43:03

标签: java hibernate hql hbm

我对Hibernate 4.3.11有问题,我有两个pojo:X和Y,Y扩展了X,实际上Y是X.hbm中的子联接类。当我在Y pojo上执行此更新时,所有Y记录都已更新,但是我想更新id为123的Y

这是我的HQL:

string hql = " update Y set Y.name = :name where e.id = :id "  
Query query = getSession().createQuery(hql);  
query.setParameter("name",name);  
query.setParameter("id",123);  
query.executeUpdate();  

执行查询时会生成以下SQL命令:

update Y set Y.name = ? where (X_Id) IN(select X_Id from HT_Y)

此外,我不想使用createSQLQuery(...),您有什么解决方案可以帮助我吗?

1 个答案:

答案 0 :(得分:2)

该查询行不通吗?

String hql = "update Y set Y.name = :name where Y.id = :id"

此外,可以使用createQuery代替CriteriaBuilder

CriteriaBuilder builder = session.getCriteriaBuilder();
CriteriaUpdate<Y> criteria = builder.createCriteriaUpdate(Y.class);
Root<Y> root = criteria.from(Y.class);
criteria.set(root.get("name"), name);
criteria.where(builder.equal(root.get("id"), 123));
session.createQuery(criteria).executeUpdate();