#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. вот так, не работает