1

我是使用 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 感到困惑。一般来说,我对数据库和实体的整个概念非常陌生,因此我们将不胜感激。

4

1 回答 1

1

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

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

    @OneToMany(mappedBy=...)
    private List<Exercise> exercises;
    @OneToMany(mappedBy=...)
    private List<FoodIntake> foodIntakes;
    
于 2013-08-13T04:19:27.290 回答