/ / Хибернация настройка на булева стойност - java, mysql, хибернация

Хибернация с настройка на булева стойност - java, mysql, хибернация

Аз съм нов за JSF и хибернацията, така че съжалявам, ако този въпрос е прост за тук.

Използвам MySQL база данни и таблицата на моите потребители има булева колона. Hibernate картографира стойността в hbm.xml като

<property name="verified" type="boolean">
<column name="verified" not-null="true"/>
</property>

Когато изпълнявам заявката, използвайки прозореца за заявки HQL в NetBeans

update Users set verified = false where email = "mail@mail.com"

той перфектно задава булева стойност true и false. Но в моя помощен клас имам този метод за задаване на стойността

public void setIsVerified(Users user, Boolean isVerified){
Transaction tx = null;

try{
tx = session.beginTransaction();
Query q = session.createQuery("update Users set verified = :verified where email = :email");
q.setParameter("verified", isVerified);
q.setParameter("email", user.getEmail());
q.executeUpdate();
}catch(RuntimeException e){
if(tx != null)
tx.rollback();
throw e;
}
}

но не задава стойността. Опитах се да задам стойността ръчно като q.setParameter("verified", true); той също не работи. (Имейлът е уникално поле, аз също се опитах да използвам полето за ID, което е първичен ключ.)

Интересна част е, когато използвам този метод, използвайки JUnit, той не произвежда съобщение за грешка или предупреждение. Изглежда, че работи перфектно, но не променя стойността в базата данни.

Всеки съвет ще бъде оценен, тъй като не получавам съобщения, които не знам къде да търся. Не знам какво се случва на заден план. Благодаря предварително.

Отговори:

1 за отговор № 1

Тъй като изрично се обаждате на startTransaction в началото на вашия метод, трябва да се обадите на tx.commit (), преди да завършите своята единица работа.

Един от плюсовете на използването на хибернация е, че можете да извършвате управлението на транзакциите си декларативно http://docs.spring.io/spring/docs/current/spring-framework-reference/html/transaction.html.