JPA проблема результата один-ко-многим - PullRequest
0 голосов
/ 22 октября 2010

Хорошо, у меня есть отображение 1-ко-многим между родительским и дочерним классом.Я могу сохранить родительский объект, и он автоматически сохранит дочерние объекты, но проблема заключается в выполнении SELECT для родительского класса.Кажется, я получаю родительский объект для каждого дочернего объекта в таблице базы данных.Поэтому, если я сохраню 1 родительский объект с 2 дочерними объектами, при использовании Hibernate выберите Критерии, я получу 2 родительских объекта !!!Все, что я хочу, - это чтобы Hibernate возвратил 1 родительский объект с его 2 дочерними объектами в поле Set child.

Я предполагаю, что мои отображения должны быть неправильными.Может кто-нибудь помочь с этим?

class Parent{
 Long parentId;
 @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
 @JoinColumn(name = "parent_table_id", nullable = false)
 Set childs;
 ....
}

class Child{
 Long childId;

}

Примечание: "parent_table_id" ссылается на родительский первичный ключ.Также это значение не отображается ни в какой родительский или дочерний объект.Я вручную вставляю это значение и использую его только в аннотации @JoinColumn.Хорошо, я новичок в этом JPA, но кажется, что Hibernate автоматически вставляет значения для поля "parent_table_id" в таблицу Child, когда я сохраняю объект Parent with Child.Может ли это быть причиной проблемы?

1 Ответ

1 голос
/ 22 октября 2010

Ваше отображение выглядит нормально, похоже, что вам действительно нужно:

criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

, так как вы выполняете внутреннее соединение, в результате которого в запросе критериев возвращается более одной строки результатов.

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