@Romka21

OneToMany в Hibernate?

Товарищи прошу помочь, че-то не догоняю.
Вообщем есть два класса "Справочник" и "Поля справочника".
Оба класса прописаны в HibernateSessionFactoryUtil:
configuration.addAnnotatedClass(Dictionary.class);
configuration.addAnnotatedClass(DictionaryContent.class);

и успешно создаются в бд, вот собственно они:

@Entity
@Table(name = "sys_dictionaries")
public class Dictionary {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column
    UUID guid = UUID.randomUUID();

  @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<DictionaryContent> dictionaryContents = new HashSet<>();
 
   .............................
}


@Entity
@Table(name = "sys_dictionaries_content")
public class DictionaryContent {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;


    @Column
    UUID guid = UUID.randomUUID();

    @Column
    UUID dictionaryId;
  
    ........................
}


Очень хотелось бы дочерние записи (DictionaryContent ) связать с Dictionary по средствам его UUID идентификатора.

Сейчас когда я сохраняю обьект Dictionary, передав в него коллекцию из DictionaryContent, все успешно записывается в свои таблицы, однако в таблице DictionaryContent, не появляется никакого идентификатора-указателя на родительский Dictionary.

Скрин таблицы DictionaryContent:
5c03f5b8b3b7e953674217.png
  • Вопрос задан
  • 497 просмотров
Решения вопроса 1
azerphoenix
@azerphoenix Куратор тега Java
Java Software Engineer
Здравствуйте!
Я и сам только изучаю разработку на Java (hibernate, spring etc.)
Очень хотелось бы дочерние записи (DictionaryContent ) связать с Dictionary по средствам его UUID идентификатора.

Вам нужно использовать OneToMany & ManyToOne. Со стороны Dictionary получаете список записей DictionaryContent (List или Set), а со стороны DictionaryContent получаете объект Dictionary.

@Entity
public class Dictionary {

   @OneToMany(mappedBy = "dictionary")
    private List<DictionaryContent> contentList;
}

@Entity 
public class DictionaryContent {

    @ManyToOne
    @JoinColumn(name = "id")
    private Dictionary dictionary;

}


однако в таблице DictionaryContent, не появляется никакого идентификатора-указателя на родительский Dictionary.

это потому, что со стороны DictionaryContent скорее всего вы не связали, как в примере выше.

Хороший пример - https://devcolibri.com/%D0%BA%D0%B0%D0%BA-%D1%81%D...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы