0

在我的 ER 模型中,我有两个由多对多关系关联的类(用户和例程),但我不知道如何将其转换为 GvNIX 代码。我应该在每个类中使用一个 set 属性来指定多对多基数吗?例如:

field set --fieldName routines --class ~.objects.User --type ~.objects.Routine --cardinality MANY_TO_MANY 
field set --fieldName users --class ~.objects.Routine --type ~.objects.User --cardinality MANY_TO_MANY
4

1 回答 1

2

要在两个方向上映射多对多关系,必须将一个方向定义为所有者,而另一个必须使用 --mappedBy 属性来定义其映射。

以典型的Employee-Project为例,一个Employee可以参与多个Project,一个Project可以有多个Employee。要创建这种双向多对多关系,请使用 field set 命令:

创建实体:

entity jpa --class ~.domain.Project
entity jpa --class ~.domain.Employee

创建关系的所有者:

field set --class ~.domain.Employee --fieldName projects --type ~.domain.Project

然后创建关系的另一端:

field set --class ~.domain.Project --fieldName employees --type ~.domain.Employee --mappedBy projects

如果不使用 --mappedBy,则持久性提供程序将假定存在两个独立的关系,并且您最终会在连接表中插入重复的行。如果你有一个概念上的双向关系,但在数据库中有两个不同的连接表,那么你不能使用--mappedBy,因为你需要维护两个独立的表。

最后,要自定义生成的代码只需使用 JPA 强制 Luke,看看 http://en.wikibooks.org/wiki/Java_Persistence/ManyToMany

于 2015-05-06T09:44:23.810 回答