我是一般使用JPA 2.0和数据库的初学者,我只是对一些概念感到困惑。 所以我总共有3张桌子。一个是UserTable,它包含有关我的用户的所有信息。它有一个名为user_Id的主键字段。我的另外两个表是ExercisesTable和FoodIntakeTable,它们每个都有一个名为user_Id的外键字段来引用我的UserTable中的user_Id。我希望从user_Id表到两个表中的每一个都有一对多的关系,这样我就可以找到拉出用户的运动信息或食物信息。
非常像这样: FoodIntakeTable< - > UserTable< - > ExercisesTable
我需要从UserTable到FoodIntakeTable的双向映射,以及来自user_Id字段的从UserTable到ExercisesTable的双向映射。
问题是,当我尝试在我的Usertable类中编写这样的代码时:
@OneToMany(mappedBy="ExercisesTable.userId")
@OneToMany(mappedBy="FoodIntakeTable.userId")
public long userId;
这是非法的,因为我不能在同一个字段上有两个@OneToMany注释。我认为它应该在普通的关系数据库中是合法的,我只是对如何将其转换为JPA感到困惑。我对整个数据库和实体的概念都很陌生,所以任何帮助都会受到赞赏。
答案 0 :(得分:0)
在JPA中,您可以直接引用实体对象,而不是它们映射的ID。尝试这样的事情:
Exercise
,FoodIntakeTable为FoodIntake
,UserTable为User
。然后您的User
实体是关系的拥有方,每个关系都有一个字段,如下所示:
@OneToMany(mappedBy=...)
private List<Exercise> exercises;
@OneToMany(mappedBy=...)
private List<FoodIntake> foodIntakes;