在休眠中添加自表外键

时间:2011-06-10 09:58:58

标签: mysql hibernate

我在同一个表中有父条目和子条目,为了区分,我添加了一个具有父ID的列。

表格说明如下

create table temp(id bigint(20) PK,name varchar(50),parent_id bigint(20) references temp(id));

for Ex ..

id | name    | parent_id 
------------------------
1  | text1   | null 
2  | text1.1 | 1
3  | text1.2 | 1 

如何使用hibernate save / saveOrUpdate维护此表?

当我要在此表中保存记录时,它将ID作为自动生成,因此在保存时我会得到parent_id = 0而不是实际ID。

请提供一些必要的答案..

2 个答案:

答案 0 :(得分:0)

看来,你在业务对象中使用int变量作为父引用。将具有相同业务对象的对象作为父引用。

e.g。

Class ParentChild
{
   public int id;
   public String name;
   public ParentChild objParentChild;   // Instead of public **int** parentID; 
}

希望,它会帮助你......

答案 1 :(得分:0)

你可以在这里使用hibernate注释Supose我有两个实体问答。

Question have :
    questionid
    name

Answer have :
    answerid
    questionid
    name 

Answer Entity contain :

   @ManyToOne(cascade=CascadeType.ALL)
    @JoinColumn(name="questionid")
    private Question question;

Question Entiry contain :
    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.LAZY,mappedBy="question")
    private List<Answer> anserList = new ArrayList<Answer>();

现在您可以在实际创建问题之前设置答案:

for(Answer  opt : question.getAnswerList()){
                    opt.setQuestion(question);

                }