The objects you are trying to persist include TitleType
that should not have ID
values. Otherwise Hibernate will check to see if that object is persistent or detached in the session context. If you don't want to persist some fields of your object like that you could use @Transient
annotation to exclude those fields from the fields map when persisting the entity. This is not good to hardcode IDs in the DAOs or entities because these values could be generated by some generator but if you manually updated the database with this constants you could at least define these IDs as constants in your code and load objects from session by ID before initialize the transient or persistent instance.