JPA实体中一个字段的多个关系

时间:2013-08-12 20:51:51

标签: jpa entity-relationship

我是一般使用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感到困惑。我对整个数据库和实体的概念都很陌生,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

在JPA中,您可以直接引用实体对象,而不是它们映射的ID。尝试这样的事情:

  1. 您的每个表都应该有一个实体类型,例如,练习表为Exercise,FoodIntakeTable为FoodIntake,UserTable为User
  2. 然后您的User实体是关系的拥有方,每个关系都有一个字段,如下所示:

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