2015-01-27 3 views
0

У меня есть класс сущностей, как ClassA, который содержитсоздания Таблицы с помощью JPA

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER) 
List<ClassB> possibleValues; 

Это утверждение будет ввести значения в таблице classa и есть в нем также входит значения в classb соответствующего к ClassA.

Создает ли любой стол, например classa_possible_values, и вводит значения?

ответ

0

Вы можете установить, какой объект является владельцем отношения, используя аннотации и установить способ хранения данных в базе данных.

Например, вы можете установить внешний ключ в таблице ClassB для ClassA. Список ClassB в сущности ClassA не имеет столбца в таблице ClassA, но этот список сохраняется как внешние ключи в ClassB. Для реализации этого вам нужно добавить значение mappedBy в аннотации «OneToMany» и добавить аннотацию «ManyToOne» в ClassB:

@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER, mappedBy=classA) 
List<ClassB> possibleValues; 

В ClassB:

@Entity 
public ClassB { 
    ... 
    @ManyToOne 
    ClassA classA; 
    ... 
} 

Есть и другие варианты, например, создавая joinTable для отношений, но, на мой взгляд, это более простое решение.

Если вы хотите создать схему базы данных на основе аннотаций JPA, вы должны добавить некоторые свойства конфигурации, например, это как добавить эту конфигурацию для JPA/Hibernate: Hibernate schema generation properties

+0

Хорошо, что происходит в моей текущей ситуации, значения ClaasA сохраняются в таблице classa, значения ClassB соответствуют ClassA, сохраняются для класса b, и сопоставление таблицы сопоставлений как с первичным идентификатором было сгенерировано. ClassB не содержит '@ ManyToOne' .У вас есть идея для этой конфигурации? Должен ли я создать '@ ManyToOne' для classA, как вы предложили? – abc

+0

Если вы не задаете аннотацию «ManyToOne», создается таблица соединений. Вы не можете хранить несколько внешних ключей ClassB в строке таблицы ClassA. Если аннотация «ManyToOne» задана в ClassB, внешние ключи ClassA могут быть сохранены в таблице ClassB, а таблица соединений не нужна. –

+0

Спасибо :) Можете ли вы, плз, называть меня учебником, откуда я могу очистить понятия? – abc

0

Не было бы никаких таблиц, генерируемых из этой аннотации, они просто определяют отношения между таблицами. Если вы добавите аннотацию @JoinColumn, то внешний ваш столбец будет создан вашим провайдером JPA.

+0

Так что я верю там не будет никакой записи в эту таблицу. – abc

+0

JPA не создает записи самостоятельно. Только если вы сохраняете записи. – meskobalazs

Смежные вопросы