Добавить внешний ключ таблицы в Hibernate - PullRequest
2 голосов
/ 10 июня 2011

У меня есть родительские и дочерние записи в одной таблице. Для дифференцирования я добавил один столбец с родительским идентификатором.

описание таблицы как ниже

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

для Ex ..

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

Как мне сохранить эту таблицу с помощью hibernate save / saveOrUpdate?

Когда я собираюсь сохранить записи в этой таблице, он имеет автоматически генерируемый идентификатор, поэтому во время сохранения я получу parent_id = 0 вместо фактического идентификатора.

Пожалуйста, дайте несколько нужных ответов.

Ответы [ 2 ]

0 голосов
/ 15 июля 2011

Здесь вы можете использовать аннотацию гибернации. Предположим, у меня есть две сущности: Вопрос и Ответ.

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

                }
0 голосов
/ 10 июня 2011

Кажется, у вас есть переменная int в качестве родительской ссылки в вашем бизнес-объекте.Возьмите объект того же бизнес-объекта в качестве родительской ссылки.

например

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

Надеюсь, это поможет вам ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...