org.hibernate.exception.ConstraintViolationException: синтаксис запроса hql

#hibernate

#впасть в спящий режим #переход в спящий режим

Вопрос:

у меня есть таблица с именем Champ , я хочу увеличить все идентификаторы после int i на 1 , и, конечно, idChamp является первичным ключом

 public void increase(int i){

   Query query=factory.getCurrentSession().createQuery("UPDATE Champ c set c.idChamp=c.idChamp 1 WHERE c.idChamp>= :var ORDER BY DESC");
     query.setParameter("var",i 1);         
     int result=query.executeUpdate();
     System.out.println(result);
                                }
  

и я тоже попробовал это сделать

    @SuppressWarnings("unchecked")
    public void increase(int i){

         String hql = "from Champ c WHERE c.idChamp>=:num ORDER BY DESC";
         List<Champ> lesChamps = ( factory.getCurrentSession().createQuery(hql)
         .setParameter("num", i)).list();
         for (Champ c: lesChamps){
             c.setIdChamp(c.getIdChamp() 1);
         }
                                }
  

Комментарии:

1. так в чем проблема? вы не уверены в запросе? почему у вас есть Orderby в запросе на обновление?

2. потому что, если он начинается сверху, у меня будет 2 объекта с одинаковым идентификатором

3. чувак, запрос выдает org.hibernate.exception. ConstraintViolationException

4. Разве вы не можете сначала получить коллекцию и увеличить идентификаторы один за другим?

5. вот так, не работает