【问题标题】:How to do a ManyToMany relationship, with hibernate, in Java-EE?java - 如何在Java-EE中使用hibernate建立ManyToMany关系?
【发布时间】:2019-05-23 00:52:12
【问题描述】:

在使用依赖项构建我的 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;

我希望建立多对多关系,因为“模板”包含多个“配置”,而“配置”可以位于多个“模板”(配置)中。

【问题讨论】:

  • 1) 能否请您显示模板和配置的整个 java 代码。 2)@JoinTable 映射错误,不能有两列同名
  • @SimonMartinelli 我有一个 BaseEntity,它是一个 MappedSuperClass,它的 id 字段带有“@GeneratedValue”标签。其余代码是带有 getter 和 setter 的构造函数。
  • @RicardoFerreira:在配置实体中,它应该是一个列表——像这样List&lt;Template&gt; templates
  • @RicardoFerreira:由于模板和配置之间存在多对多关系,这意味着模板可以有多个配置,一个配置可以有多个模板。如果一个配置只能有一个模板,则需要在TemplateEntity 中指定OneToMany 关系,在Configuration 实体中指定ManyToOne 关系。
  • @RicardoFerreira:这解决了你的问题吗?

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


【解决方案1】:

通常,当您未定义 Generics 而定义 Many 方面的关系时,您定义的异常会像 here 解释的那样发生

虽然在你的情况下,还有一些其他问题。

既然你已经在ConfigurationTemplate之间应用了@ManyToMany关系,那么在配置实体中应该这样定义。

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

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

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

在模板实体中,您将拥有

@OneToMany
private List<Configuration> configurations;

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-14
    • 2012-06-17
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多