JPA EntityExistsException -
the problem i'm facing following:
exception in thread "main" javax.persistence.entityexistsexception: different object same identifier value associated session: [de.entities.genre#28] @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1359) @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1310) @ org.hibernate.ejb.abstractentitymanagerimpl.convert(abstractentitymanagerimpl.java:1316) @ org.hibernate.ejb.abstractentitymanagerimpl.persist(abstractentitymanagerimpl.java:881) @ de.model.databasebuilder.importdata(databasebuilder.java:87) @ de.main.main.main(main.java:55)
so exception tells me want insert 2 different objects same primary key id.
all datas want insert database using jpa coming xml file. parse file saxparser. of course there many genre entries id 28 because many movies have same genre.
if use auto-generated ids, data wont correct anymore because id's correctly given xml file.
how can solve problem? why isn't jpa not ignoring fact, object present in database , inserting ids of movies , genres in m:n table?
either directly calling persist on genre instances, or calling persist on movie , movie->genre mapping has cascade persist. jpa requires providers throw exception when persist called on detached entity, since persist means want provider insert it, , detached because exists. exception. sounds parser not able tell genre entities same instance, , creating multiple instances of same data. if cannot fixed, might try using merge instead. merge check first if entity instance new or detached. if new, insert, while if detached, retrieve data , update in database.
other options make sure not calling persist on detached genre instances. remove cascade persist settings on relationships, , ensure manually call persist or merge on new genre instances rather rely on cascade persist settings.
Comments
Post a Comment