我对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(...),您有什么解决方案可以帮助我吗?
答案 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();