Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > JPA: Как сохранять объект с заданным ключом?


Автор: Andrey1 8.5.2008, 14:35
Есть объекты, ключи к которым проставляются программно.
Сохраняются объекты через EntityManager так:
Код

        em.getTransaction().begin();
        em.persist(object);
        em.getTransaction().commit();

Проблема в том, что первый объект сохраняется ОК, а при попытке сохранить второй объект вылетает ошибка:
Код

javax.persistence.EntityExistsException: 
Exception Description: Cannot persist detached object [Object[PK=ObjectPK[Id1=47973, Id2=20909202, Id3=6956, Id4=0, endAbsTime=1210245775513]]]. 
Class> Object Primary Key> [20909202, 1210245775513, 47973, 6956, 0]
        at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:208)
        at ObjectDAO.save(ObjectDAO.java:94)
        at TestPersistence.main(TestPersistence.java:42)
Caused by: Exception [TOPLINK-7231] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.ValidationException
Exception Description: Cannot persist detached object [Object[PK=ObjectPK[Id1=47973, ...]]]. 
Class> Object Primary Key> [20909202, 1210245775513, 47973, 6956, 0]
        at oracle.toplink.essentials.exceptions.ValidationException.cannotPersistExistingObject(ValidationException.java:2171)
        at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNotRegisteredNewObjectForPersist(UnitOfWorkImpl.java:3251)
        at oracle.toplink.essentials.internal.ejb.cmp3.base.RepeatableWriteUnitOfWork.registerNotRegisteredNewObjectForPersist(RepeatableWriteUnitOfWork.java:339)
        at oracle.toplink.essentials.internal.sessions.UnitOfWorkImpl.registerNewObjectForPersist(UnitOfWorkImpl.java:3220)
        at oracle.toplink.essentials.internal.ejb.cmp3.base.EntityManagerImpl.persist(EntityManagerImpl.java:205)
        ... 2 more

Автор: Andrey1 8.5.2008, 16:43
Разобрался... Ключ одним и тем же оказался  smile 
Нада как-то эти ключи клонировать, блин...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)