Hibernate. HQL обновление типа пользователя - PullRequest
4 голосов
/ 08 апреля 2011

Возможно ли обновить поле типа пользователя в HQL-запросе?

Когда я пытаюсь использовать пользовательский тип в предложении where, все работает нормально.

  getSession()
      .createQuery("update " + AvatarDataSet.class.getName() + " set removed=false where id=:avatarId and position =:pos ")
      .setParameter("pos", ds.getPosition(), Hibernate.custom(ConstPointUserType.class))
      .setParameter("avatarId", ds.getPersistentId().getLongId())
      .executeUpdate();

update avatar set is_removed=false where Id=? and position_x=? and position_y=? and position_z=?

Но когда я пытаюсь использовать тип пользователя как поле для обновления, я получаю исключение. Похоже, что hibernate пытается перевести заполнитель "position" в строку sql "position_x =? And position_y =? And position_z =?" в любом случае даже в заданной части обновления ...: (

      getSession()
      .createQuery("update " + AvatarDataSet.class.getName() + " set position = :pos where dbId=:avatarId") 
      .setParameter("pos", ds.getPosition(), Hibernate.custom(ConstPointUserType.class))
      .setParameter("avatarId", ds.getPersistentId().getLongId())
      .executeUpdate();

org.hibernate.hql.ast.QuerySyntaxException: unexpected AST node: AND near line 1, column 51 [update dataSets.avatar.AvatarDataSet set position = :pos where dbId=:avatarId]
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:54)
    at org.hibernate.hql.ast.QuerySyntaxException.convert(QuerySyntaxException.java:47)
                          .......

Edit:

Это ошибка. Все еще не решено. http://opensource.atlassian.com/projects/hibernate/browse/HHH-5936

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