Проблема обновления наследования Hibernate при создании таблицы HT - PullRequest
0 голосов
/ 27 ноября 2018

У меня проблема с Hibernate 4.3.11, у меня есть два pojos: X и Y, которые Y расширяют X, На самом деле Y - это дочерний класс в X.hbm.Когда я извиняюсь за это обновление в 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 (...), у вас есть какое-нибудь решение, чтобы помочь мне?

1 Ответ

0 голосов
/ 28 ноября 2018

Не должен ли этот запрос работать?

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();
...