【发布时间】:2014-05-01 15:38:57
【问题描述】:
我有一个包含五条数据的节点数据库:
- id (int, PK)
- 问题(varchar)
- 结果(varchar)
- left_id (int, FK)
- right_id (int FK)
和同一张表中的两个外键:
- left_id -> id
- right_id -> id
这是我的豆子:
@Entity
@Table (name = "node")
public class Nodes
{
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
@Column(name="id")
@NotNull
private int id;
@Column (name = "question")
private String question;
@Column ( name = "result")
private String result;
@OneToOne(fetch= FetchType.LAZY)
@JoinColumn(name="left_id", referencedColumnName="id")
private Nodes left;
@OneToOne(fetch= FetchType.LAZY)
@JoinColumn(name="right_id", referencedColumnName="id")
private Nodes right;
我可以通过以下方式查看 left_id:
nodes.getLeftNodes().getId_node();
但我无法在我的数据库中插入新数据 left/right_id
我的插入方法是
public void insert_question(String question, int left_id) throws HibernateException
{
try
{
Session session = getSession();
Transaction tx = session.beginTransaction();
Nodes node = new Nodes();
node.setQuestion(question);
node.setId_node(left_id);
session.saveOrUpdate(node);
tx.commit();
session.close();
}
问题已插入数据库,但未插入 left_id。对我来说,问题是外键(左或右节点)是一个对象,但在我的数据库中 left_id 是一个整数!
由于有外键,我如何在没有 left/right_id 整数的情况下在 db 中插入 left/right_id ?
非常感谢
【问题讨论】:
标签: java mysql database hibernate foreign-keys