Я использую потоки в JAVA, чтобы выполнить несколько операций над одним и тем же объектом. Проблема возникает, когда я использую метод persist. Способ, которым я занимаюсь, следующий:Сохранить объект, используя потоки с JPA (синхронизированный)
@Transactional
private void persist(){
synchronized(this){
JPA.em().getTransaction().begin();
<nameObject>.save();
JPA.em().getTransaction().commit();
}
}
где nameObject - это имя объекта, который необходимо сохранить. Ошибка, покажите мне это:
Exception in thread "Thread-38" javax.persistence.PersistenceException: org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1389)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1317)
at org.hibernate.ejb.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1323)
at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:845)
at play.db.jpa.JPABase._save(JPABase.java:31)
at play.db.jpa.GenericModel.save(GenericModel.java:204)
at models.invoicing.PreInvoiceThread.persist(PreInvoiceThread.java:290)
at models.invoicing.PreInvoiceThread.run(PreInvoiceThread.java:273)
at java.lang.Thread.run(Thread.java:745)
меня пытаются сделать lockoptimistic на объект без результатов.
спасибо! Это решило мою проблему! – javaboygo