Java 如何解决PersistentObjectException:传递给persist的分离实体
我正在我的存储库中创建一个查询,用于更新某些用户的字段,但我不断收到以下错误:Java 如何解决PersistentObjectException:传递给persist的分离实体,java,postgresql,jpa,spring-data-jpa,Java,Postgresql,Jpa,Spring Data Jpa,我正在我的存储库中创建一个查询,用于更新某些用户的字段,但我不断收到以下错误:PersistentObjectException:传递给persist的分离实体: 我在stackoverflow中尝试了建议的解决方案,其中说我需要将“cascade=CascadeType.ALL”更改为“cascade=CascadeType.MERGE”,但仍然不适用于我 用户实体: ........ @Id @GeneratedValue(strategy = GenerationType.
PersistentObjectException:传递给persist的分离实体:
我在stackoverflow中尝试了建议的解决方案,其中说我需要将“cascade=CascadeType.ALL”
更改为“cascade=CascadeType.MERGE”
,但仍然不适用于我
用户实体:
........
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;
@Column(unique = true)
private String username;
@ManyToOne(cascade = {
CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH
}, fetch = FetchType.LAZY)
@JoinColumn(name = "address", updatable = true)
private Address address;
@Transactional
@Modifying
@Query("update user u set u.address = :address where u.userId = :userId")
public int updateUserEtablissementAndLabels(
@Param("userId") Integer userId,
@Param("address ") Address address
);
用户存储库:
........
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer userId;
@Column(unique = true)
private String username;
@ManyToOne(cascade = {
CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH
}, fetch = FetchType.LAZY)
@JoinColumn(name = "address", updatable = true)
private Address address;
@Transactional
@Modifying
@Query("update user u set u.address = :address where u.userId = :userId")
public int updateUserEtablissementAndLabels(
@Param("userId") Integer userId,
@Param("address ") Address address
);
请向我们展示您对引发异常的事务中的实体所做的操作。还显示完整的堆栈跟踪。这几乎肯定与您显示的存储库方法无关,只是它会触发刷新。感谢您的评论,问题在于级联,因此我通过删除cascadetype=persist和cascadetype=refresh来解决问题。请向我们展示您对引发异常的事务中的实体所做的操作。还显示完整的堆栈跟踪。这几乎肯定与您显示的存储库方法无关,只是它会触发刷新。感谢您的评论,问题在于级联,因此我通过删除cascadetype=persist和cascadetype=refresh来解决问题