mysql - 在hibernate中添加自表外键

标签 mysql hibernate

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

表格说明如下

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

例如..

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

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

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

请给出一些必要的答案..

最佳答案

你可以在这里使用 hibernate 注释假设我有两个实体问题和答案。

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);

                }

关于mysql - 在hibernate中添加自表外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6304784/

相关文章:

mysql - 如何启用从RDS(主)到现场数据库(从)的ssl mysql复制

mysql - 如何在 SELECT 查询中按两个 SUM/COUNT 的比率进行 ORDER?

mysql - SQL:4 个表到 1 个表,包含计数、分组和扣除?!

java - Hibernate:从 3.6.9 迁移到 4.2

java - Hibernate 级联保存错误(无法添加或更新子行 : a foreign key constraint fails)

java - FetchType.EAGER 不获取对象

mysql - 没有主键的连接表

php - 我想得到在 php 表单中填写的两个时间戳之间的差异

java - Hibernate Search 对一个查询非常慢,对另一个查询很快

java - 如何强制 Hibernate 返回一个空值而不是 null?