私は Hibernate 4.1.0.Final と hibernate-jpa-2.0-api を使用しています。エラーを含むエンティティを保存すると、他のエンティティで繰り返し保存すると、後続のエンティティにエラーがない場合でも、最初のエンティティに対して報告されたものと同じエラーが発生するという問題があります。これが私のエンティティです:
@GenericGenerator(name = "uuid-strategy", strategy = "uuid.hex")
@Entity
@Table(name = "cb_organization", uniqueConstraints = {@UniqueConstraint(columnNames={"organization_id"})})
public class Organization implements Serializable
{
…
@ManyToOne(optional = false)
@JoinColumn(name = "country_id", nullable = false, updatable = false)
/* The country the Organization is in */
private Country country;
国が null のエンティティを保存してから、国が null でない 2 番目のエンティティを保存しようとすると、2 番目の保存で、国フィールドが null であると不平を言う ConstraintViolationException がスローされます。
Organization org1 = new Organization();
…
org.setCountry(null);
orgDao.save(org1); // We expect exception to be thrown, which it is.
Organization org2 = new Organization();
…
orgDao.setCountry(country); // set a valid Country object
orgDao.save(org2);
関連するDAOコードは次のとおりです...
@Autowired
private EntityManager entityManager;
@Override
public Organization save(Organization organization)
{
if(StringUtils.isEmpty(organization.getId()))
{
entityManager.persist(organization);
}
else
{
organization = entityManager.merge(organization);
}
entityManager.flush();
return organization;
}
2回目の呼び出しでも例外がスローされる理由と、2回目の呼び出しでそれを修正する方法を知っている人はいますか?