【问题标题】:Eclipse Link to Hibernate migration error with mappedByEclipse Link to Hibernate migration error with mappedBy
【发布时间】:2014-05-31 12:37:26
【问题描述】:

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

以下 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;

MessageBean.java:

@ManyToOne
private UserBean sender;

@ManyToOne
private UserBean receiver;

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

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

如何让它与 Hibernate 一起工作?数据库架构不改变很重要,因为我想将 MySql 数据库转储到 Postgresql 数据库中,而不修改任何表或列名。

干杯,
多米尼克

【问题讨论】:

标签: mysql hibernate postgresql jpa eclipselink


【解决方案1】:

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

用户豆:

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

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

消息豆:

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

@ManyToOne
@JoinTable(name = "MESSAGES_RECEIVED")
private UserBean receiver;

【讨论】:

  • @JoinColumn 也是如此。我刚刚从应用您的答案中了解到这一点。
猜你喜欢
  • 2015-09-01
  • 2017-10-26
  • 1970-01-01
  • 2021-07-13
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多