【发布时间】:2015-04-21 18:47:06
【问题描述】:
已解决
感谢 Predrag Maric,我设法找到了一个 bug,即 referencedColumnName 没有引用正确的字段。然后我必须让 Table2 类实现 Serializable 接口,这使我的测试通过
感谢您的帮助
问题
如何在 Hibernate 中映射 Table3?
这是我的尝试:
@Entity
@Table(name="Table3")
public class Table3 implements Serializable
{
@Id
@GeneratedValue
private long id;
@NotNull
@Column(name="field1")
private String field1;
@NotNull
@Column(name="field2")
private String field2;
@ManyToOne
@JoinColumn(name="Table2_id")
private Table2 Table2_id ;
@ManyToOne
@JoinColumn(name="Table2_Table1_username")
private Table2 Table2_Table1_username;
错误出现在我的 JUnit 测试中:
Cannot add or update a child row: a foreign key constraint fails (database.Table3, CONSTRAINTfk_Table3_Table2FOREIGN KEY (Table2_id,Table2_Table1_username) REFERENCESTable2(id,Table1_username@978
构造函数:
Table3(String field1, String field2, Table2 table)
{
this.field1 = field1;
this.field2 = field2;
this.Table2_id = table;
this.Table2_Table1_username = table;
}
JUnit 测试
@Before
public void init()
{
JdbcTemplate jdbc = new JdbcTemplate(dataSource);
jdbc.execute("DELETE FROM Table3");
jdbc.execute("DELETE FROM Table2");
jdbc.execute("DELETE FROM Table1");
}
@Test
public void testCreateMedia()
{
table1DAO.createTable(table1Object);
table2DAO.createTable(table2Object);
table3DAO.createTable(table3Object); //fails here
}
注意: 我没有对变量使用 java 命名约定
【问题讨论】:
-
嗯,它有效吗?这里有什么问题?
-
@Kayaman 请查看我更新的问题:)
标签: java hibernate spring-mvc