如何在 Java-EE 中使用 hibernate 建立多对多关系?
How to do a ManyToMany relationship, with hibernate, in Java-EE?
在使用依赖项构建我的 maven 项目时,我不断收到此错误:
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;
模板(关系的所有者):
@ManyToMany
@JoinTable(name="TEMPLATE_CONFIGURATIONS",
joinColumns=
@JoinColumn(name="ID", referencedColumnName="ID"),
inverseJoinColumns=
@JoinColumn(name="ID", referencedColumnName="ID")
)
private List<Configuration> configurations;
我想建立多对多关系,因为 "Templates" 包含多个 "Configurations",并且 "Configurations" 可以有多个 "Templates"(配置)。
通常,当您在定义关系的 Many
端时未定义 Generics
时,通常会出现您定义的异常,如解释的那样
虽然你的情况还有一些其他问题。
由于您在 Configuration
和 Template
之间应用了 @ManyToMany
关系,它应该在配置实体中这样定义。
@ManyToMany(mappedBy="configurations")
private List<Template> templates;
如果您要求 Configuration 只能在模板上有,而一个模板可以有多个 Configurations,您应该使用 OneToMany
关系。在配置实体中,您将拥有:
@ManyToOne(mappedBy="configurations")
private Template template;
而在模板实体中,您将拥有
@OneToMany
private List<Configuration> configurations;
希望对您有所帮助!!
在使用依赖项构建我的 maven 项目时,我不断收到此错误:
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;
模板(关系的所有者):
@ManyToMany
@JoinTable(name="TEMPLATE_CONFIGURATIONS",
joinColumns=
@JoinColumn(name="ID", referencedColumnName="ID"),
inverseJoinColumns=
@JoinColumn(name="ID", referencedColumnName="ID")
)
private List<Configuration> configurations;
我想建立多对多关系,因为 "Templates" 包含多个 "Configurations",并且 "Configurations" 可以有多个 "Templates"(配置)。
通常,当您在定义关系的 Many
端时未定义 Generics
时,通常会出现您定义的异常,如解释的那样
虽然你的情况还有一些其他问题。
由于您在 Configuration
和 Template
之间应用了 @ManyToMany
关系,它应该在配置实体中这样定义。
@ManyToMany(mappedBy="configurations")
private List<Template> templates;
如果您要求 Configuration 只能在模板上有,而一个模板可以有多个 Configurations,您应该使用 OneToMany
关系。在配置实体中,您将拥有:
@ManyToOne(mappedBy="configurations")
private Template template;
而在模板实体中,您将拥有
@OneToMany
private List<Configuration> configurations;
希望对您有所帮助!!