Thursday 15 June 2017

A different object with the same identifier value was already associated with the session

Hibernate Error: org.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session

What is the reason of such exception?


Session already contains object that you are trying to put there one more time  with such identifier (for example with update). It also could be many-to-one  or one-to-many relationship object or cascading operation.


How to deal with it?

  • probably you already called update() for this object, and trying do this 2nd time
  • another possible reason you making copy of the object that is already associated with session (has assigned id and was loaded recently) and trying to update it
  • try session.merge() - it will copy the state of the given object into the persistent object with the same identifier.
  • try session.evict(object) - remove this instance from the session cache.

Sunday 11 June 2017

Domain Driven Design in Java

I think most enterprise java world is suffering  from Anemic Domain Model. One of the ways that can help you is DDD. I've started researching DDD area, and I've found couple of good books and sources for them:

Implementing Domain-Driven Design by Vaughn Vernon (I think it is good to start book)

and source code is here : https://github.com/VaughnVernon/IDDD_Samples

And one more book called Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 

and source code is here: https://github.com/citerus/dddsample-core

more code samples https://github.com/ddd-by-examples/library
https://github.com/mploed/ddd-with-spring