錯誤現象:Project和User使用註解多對一單向關聯(@ManyToOne)
// Project 類
@ManyToOne
@JoinColumn(name = "user_id", nullable = false)
private User user;
先new一個Project對象,並從數據庫中取出User對象放入Project對象
此時使用session.save(project)報錯:On release of batch it still contained JDBC statements
錯誤分析:由於user對象是從數據庫中取出,還緩存在session中,此時save(project)就報錯
解決辦法:配置Cascade註解就可以了
@ManyToOne
@Cascade(value = CascadeType.SAVE_UPDATE) // 增加該註解即可
@JoinColumn(name = "user_id", nullable = false)
private User user;
解決辦法二:用
session.merge()
方法代替session.save()
即可