spring data jpa 让人感觉就是白高心了一场; 我测试一对多关联映射时,也被这个save()搞得莫名其妙在同一个事务下,明明在一的一端先save,然后再保存多的一端, 就是提示org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing 但是在一的一端save之后 先load一下,再保存多的一端,一起就顺利了。 也不能参考 纯JPA中的 @ManyToOne中加(cascade = {CascadeType.ALL}) 否则在一个事务下 多的一端加几次 一的一端就会重复几次插入数据出现这些麻烦应该就是楼主说的spring data内部 save好像一直都是执行persist()方法 考虑放弃了
Spring Data JPA 的保存操作, 是根据状态来判断的. 如果没有经过load的过程, Spring Data JPA 都认为该对象是游离状态会执行保存操作; 如果需要更新必须先Load再设置属性后再Save. 这点确实有点小郁闷, 不知道大家有没有好点的方法来解决这个问题. 我看了下Spring Data JPA的例子, 在做更新操作时用了DTO对象进行数据传递, 在保存时再把DTO赋值给Domain对象..
我测试一对多关联映射时,也被这个save()搞得莫名其妙在同一个事务下,明明在一的一端先save,然后再保存多的一端,
就是提示org.hibernate.TransientPropertyValueException: object references an unsaved transient instance - save the transient instance before flushing
但是在一的一端save之后 先load一下,再保存多的一端,一起就顺利了。
也不能参考 纯JPA中的 @ManyToOne中加(cascade = {CascadeType.ALL})
否则在一个事务下 多的一端加几次 一的一端就会重复几次插入数据出现这些麻烦应该就是楼主说的spring data内部 save好像一直都是执行persist()方法
考虑放弃了
我看了下Spring Data JPA的例子, 在做更新操作时用了DTO对象进行数据传递, 在保存时再把DTO赋值给Domain对象..
List <Role> roles;