Eclipse Link to Hibernate迁移错误与mappedBy

use*_*453 8 mysql postgresql hibernate jpa eclipselink

我正在尝试将 MySql 数据库迁移到 Postgresql。我正在使用 JPA,并使用 Eclipse Link 作为 MySQL 数据库,但我正在切换到 Hibernate 作为 Postgresql 数据库。

以下 JPA 注释可与 EclipseLink 配合使用:

UserBean.java:

@OneToMany(mappedBy = "sender", cascade = CascadeType.ALL)
@JoinTable(name = "MESSAGES_SENT")
private List<MessageBean> messagesSent;

@OneToMany(mappedBy = "receiver", cascade = CascadeType.ALL)
@JoinTable(name = "MESSAGES_RECEIVED")
private List<MessageBean> messagesReceived;
Run Code Online (Sandbox Code Playgroud)

MessageBean.java:

@ManyToOne
private UserBean sender;

@ManyToOne
private UserBean receiver;
Run Code Online (Sandbox Code Playgroud)

使用 Hibernate,我收到以下错误消息:

org.hibernate.AnnotationException:标记为mappedBy的关联不得定义数据库映射,如@JoinTable或@JoinColumn

我怎样才能让它与 Hibernate 一起工作?重要的是数据库架构不要更改,因为我想将 MySql 数据库转储到 Postgresql 数据库中,而不修改任何表或列名。

干杯,
多米尼克

Ang*_*ity 7

映射意味着 Hibernate 应该查看/跟踪关系的另一侧,因此尝试将连接表移动到关系的另一侧:

用户Bean:

@OneToMany(mappedBy = "sender", cascade = CascadeType.ALL)
private List<MessageBean> messagesSent;

@OneToMany(mappedBy = "receiver", cascade = CascadeType.ALL)
private List<MessageBean> messagesReceived;
Run Code Online (Sandbox Code Playgroud)

消息Bean:

@ManyToOne
@JoinTable(name = "MESSAGES_SENT")
private UserBean sender;

@ManyToOne
@JoinTable(name = "MESSAGES_RECEIVED")
private UserBean receiver;
Run Code Online (Sandbox Code Playgroud)

  • 对于“@JoinColumn”也是如此。我刚刚从应用你的答案中了解到这一点。 (2认同)