Java 生成HT表时出现Hibernate继承更新问题

Java 生成HT表时出现Hibernate继承更新问题,java,hibernate,hql,hbm,Java,Hibernate,Hql,Hbm,我对Hibernate 4.3.11有一个问题,我有两个POJO:X和Y,Y扩展了X,实际上Y是X.hbm中的一个subjoin类。当我在Y pojo上执行此更新时,所有Y记录都已更新,但我想更新Y,其中id为123 这是我的HQL: string hql = " update Y set Y.name = :name where e.id = :id " Query query = getSession().createQuery(hql); query.setParameter("n

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

这是我的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(…),您有什么解决方案可以帮助我吗?

这个查询不应该工作吗

String hql = "update Y set Y.name = :name where Y.id = :id"
此外,可以使用
CriteriaBuilder
代替
createQuery

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();
CriteriaBuilder=session.getCriteriaBuilder();
CriteriaUpdate criteria=builder.createCriteriaUpdate(Y.class);
根=标准。从(Y.class);
criteria.set(root.get(“name”)、name);
其中(builder.equal(root.get(“id”),123));
createQuery(条件).executeUpdate();