Пакетное обновление вернуло неожиданное количество строк от обновления - PullRequest
1 голос
/ 20 июня 2010

У меня есть следующие отношения:

// In A.java class
@OneToMany(mappedBy="a", fetch=FetchType.LAZY)
@Cascade(CascadeType.SAVE_UPDATE)
private List<B> bList;

// In B.java class
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="id_a")
@Cascade(CascadeType.SAVE_UPDATE)
private A a;

Я получаю это исключение:

StaleStateException: Batch update returned unexpected row count from update

Когда я пытаюсь saveOrUpdate создать объект a после удаления из него b.

// first delete old b record
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
a.getBList().remove(b);
b.setA(null);
session.delete(b);
// session.clear(); // this would solve my problem, but is it correct??
session.getTransaction().commit();

// then insert new b record
Session session=HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
B b=new B();
a.getBList().add(b);
b.setA(a);
session.saveOrUpdate(a);   
session.getTransaction().commit(); // this throw exception

Эти две операции, конечно, не в одном методе, запускаются событием gui.

Является ли session.clear реальным решением?Я (вероятно) делаю неправильно?

Удаление session.delete(b) решает "проблему" ... так, каков правильный путь?

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