[英]Insert foreign key in db hibernate
我有一個包含五個數據的節點數據庫:
和同一表中的兩個外鍵:
這是我的豆子:
@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是一個整數!
因為存在外鍵,如何在db中插入left / right_id而不包含left / right_id整數?
非常感謝
如果我理解正確,那么您想創建一個新節點,其中包含對現有左節點的引用。 left_id
(我將其重命名為leftId
以符合標准命名約定)是現有左節點的標識符。
因此非常簡單:首先需要獲得對數據庫中現有節點左節點的引用,創建引用該左節點的新節點,然后插入新節點:
Node leftNode = (Node) session.load(Node.class, leftId);
Node node = new Node();
node.setQuestion(question);
node.setLeft(leftNode);
session.save(node);
請注意,我也將Nodes
重命名為Node
。 此類的一個實例表示一個節點,因此沒有理由將此類命名為Nodes
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.