When entityManager.persist(…)-Method is called and when a entityManager.merge(…) is called in spring data jpa. According to documentation: If the entity has not been
here is the impl of save
method(in SimpleJpaRepository
):
/*
* (non-Javadoc)
* @see org.springframework.data.repository.CrudRepository#save(java.lang.Object)
*/
@Transactional
public S save(S entity) {
if (entityInformation.isNew(entity)) {
em.persist(entity);
return entity;
} else {
return em.merge(entity);
}
}
So it looks at entityInformation.isNew(entity)
. Implementation of this method is(in AbstractPersistable
) :
public boolean isNew() {
return null == getId();
}
So it decides based on id field