我正在使用Hibernate 4.0.1.Final與MySQL 5.5數據庫。我正在編寫一個Java控制檯應用程序。在JUnit測試中,我無法使測試失敗。這裏是我的測試車型...無法獲得Hibernate JUnit測試來生成約束異常
@Entity
@Table(name = "ic_domain")
public class Domain {
@Id
@Column(name = "DOMAIN_ID")
private String domainId;
@OneToOne(fetch = FetchType.EAGER, targetEntity = Organization.class)
@JoinColumn(name = "ORGANIZATION_ID")
private Organization org;
和
@Entity
@Table(name = "ic_organization")
public class Organization {
@Id
@Column(name = "ORGANIZATION_ID")
private String organizationId;
我的問題是,在我的JUnit測試,我試圖創建一個不存在的外鍵,期待的事情時失敗節約,但他們從不這樣做。下面是JUnit測試
@Test
public void testSaveDomainWithUnmathcedOrg() {
final Organization org = createDummyOrg();
// Create an org id that doesn't exist.
org.setOrganizationId("ZZZZ");
final Domain domain = new Domain();
final String id = UUID.randomUUID().toString().replace("-", "");
domain.setDomainId(id);
domain.setName(org.getName());
domain.setOrg(org);
m_domainDao.saveOrUpdate(domain);
} // testSaveDomainWithUnmatchedOrg
的DAO的代碼是
public void saveOrUpdate(final Domain domain) {
final Session session = sessionFactory.getCurrentSession();
session.saveOrUpdate(obj);
} // saveOrUpdate
不應該的事情不能在 「session.saveOrUpdate」?我如何製作它們?我不想在JUnit測試中提交數據,因爲我不想用虛擬數據污染底層數據庫,但如果這是唯一的方法,那就這樣吧。