我有两个A和B类
class A{
@ManyToOne(cascade=CascadeType.ALL)
B b;
// other stuff
}
在B班
class B{
@Id
@Column(unique = true, nullable = false)
private Integer id;
// other stuff
}
每当创建A的新对象时,我想创建对象B(如果它尚不存在)。但是,如果它已经存在,那么我不想创建它。在这种情况下,我只想在A表中引用已存在的B对象。现在,当我尝试这样做时,我得到了这个例外
com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate entry '10' for key 'PRIMARY'
这似乎是一项标准任务,但我似乎无法在stackoverflow等上找到任何解决方案。有人可以帮助。谢谢!!
编辑:为了进行保存,我使用了Sring JPA存储库。我有A和B的存储库接口,最终扩展CrudReposioty
并使用其保存功能。以下是org.springframework.data.repository.CrudRepository
/**
* Saves a given entity. Use the returned instance for further operations as the save operation might have changed the
* entity instance completely.
*
* @param entity
* @return the saved entity
*/
<S extends T> S save(S entity);
答案 0 :(得分:2)
在将对象A插入数据库之前,需要设置对象B的id。在这种情况下,如果B不存在,B将被插入数据库。