2013-08-12 3 views
0

Я начинаю использовать JPA 2.0 и базы данных в целом, и я был просто смущен несколькими концепциями. Итак, у меня есть всего 3 стола. Одним из них является UserTable, который содержит всю информацию о моем пользователе. Он имеет поле первичного ключа, называемое user_Id. Мои две другие таблицы - ExercisesTable и FoodIntakeTable, и каждый из них имеет поле внешнего ключа, называемое user_Id, чтобы ссылаться на user_Id в моем UserTable. Я хочу, чтобы отношения «один ко многим» из моей таблицы user_Id привязывались к каждой из двух таблиц, поэтому я могу найти информацию о упражнении или информацию о продуктах для пользователя.JPA Несколько отношений в одном поле в объекте

Довольно много, как это: FoodIntakeTable < -> UserTable < -> ExercisesTable

мне нужно двунаправленного отображение UserTable к FoodIntakeTable а также двунаправленное отображение UserTable в ExercisesTable из поля user_id.

Проблема заключается в том, когда я пытаюсь написать свой код, как это в моем Usertable классе:

@OneToMany(mappedBy="ExercisesTable.userId") 
@OneToMany(mappedBy="FoodIntakeTable.userId") 
public long userId; 

Это незаконно, потому что я не могу иметь два @OneToMany аннотаций на том же поле. Я думаю, что это должно быть законным в обычной реляционной базе данных, и я просто смущен тем, как вы переводите это в JPA. Я очень новичок во всей концепции баз данных и сущностей в целом, поэтому любая помощь будет оценена по достоинству.

ответ

0

В JPA вы можете напрямую ссылаться на объекты объекта вместо идентификаторов, на которые они сопоставлены. Попробуйте что-то вроде этого:

  1. Вы должны иметь тип объекта для каждой из ваших таблиц, скажем Exercise для ExercisesTable, FoodIntake для FoodIntakeTable и User для вашего UserTable.
  2. Тогда ваш User объекта является владеющей стороной отношений, имея одно поле для каждого отношения, как это:

    @OneToMany(mappedBy=...) 
    private List<Exercise> exercises; 
    @OneToMany(mappedBy=...) 
    private List<FoodIntake> foodIntakes; 
    
+0

Спасибо, что помогает. :) – user2676396

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