如何在Java-EE中使用休眠模式建立ManyToMany关系?

时间:2018-12-23 12:23:33

标签: hibernate maven jpa java-ee glassfish-5

在构建具有依赖项的Maven项目时,我总是收到此错误:

onesignal

我有这两个实体,其代码如下: 配置:

Exception Description: The target entity of the relationship attribute 
[template] on the class [class pt.ipleiria.dae.entities.Configuration] 
cannot be determined.  When not using generics, ensure the target entity is 
defined on the relationship mapping.

模板(关系的所有者):

@ManyToMany(mappedBy="configurations")
private Template template;
private String name;
private ConfigurationState state;
private String version;
private String description;
private List<Module> modules;
private List<Resource> resources;
private List<String> parameters;
private List<String> extensions;
private String contrato;

我想建立多对多关系,因为“模板”包含多个“配置”,并且“配置”可以位于多个“模板”(具有配置)中。

1 个答案:

答案 0 :(得分:2)

通常,当您在定义关系的Generics端而不定义Many时会出现定义的异常,如解释的here

尽管就您而言,还有其他问题。

由于您已在@ManyToManyConfiguration之间应用了Template关系,因此应在配置实体中这样定义它。

@ManyToMany(mappedBy="configurations")
 private List<Template> templates;

如果您有一个要求,即配置只能在模板上,而一个模板可以有多个配置,则应该使用OneToMany关系。在配置实体中,您将:

@ManyToOne(mappedBy="configurations")
private Template template;

在模板实体中,您将拥有

@OneToMany
private List<Configuration> configurations;

希望这会有所帮助!