Hibernate HQL Alias ​​Issue - PullRequest
       5

Hibernate HQL Alias ​​Issue

2 голосов
/ 18 августа 2011
MainTable.java extends Common.java

private Long id ;
private Long version ; 
private String name ;
private SubTable sub ;


SubTable.java extends Common.java

private String subname ;
prviate String dualname ; 


Common.java

private Long id ;
prviate Date createDate ;


HQL
v
String sql = "update MainTable set name = ?  where sub.id = ? and version = ?" ; 
Query query = session..createQuery(sql);
// set paramerts
query.executeUpdate();

Hibernate Генерируемый SQL

update MainTable set name =?где templateve0_.SUB_ID =?и версия =?

Ошибка

ОШИБКА org.hibernate.util.JDBCExceptionReporter - ORA-00904: "TEMPLATEVE0 _". "SUB_ID": неверный идентификатор

FYI - SUB_ID равендопустимое имя столбца.

Я не уверен, почему hibernate добавляет псевдоним templateve0_ только для подобъекта.Любая помощь?

Ответы [ 2 ]

1 голос
/ 18 августа 2011

Original - String sql = "обновить имя набора MainTable =? Где sub.id =? И version =?";

Обновлено String sql = "обновить имя набора MainTable =? Где SUB_ID =? И версия =?";

Я заменил sub.id на фактическое имя столбца, и оно работает!Очень странно!

0 голосов
/ 18 августа 2011

Попробуйте добавить псевдоним к корневому объекту:

update MainTable m set m.name = :name where m.sub.id = :id and m.version = :version

(ПРИМЕЧАНИЕ: я предпочитаю именованные переменные порядковым)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...