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 数据库中,而不修改任何表或列名。
干杯,
多米尼克
映射意味着 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)
| 归档时间: |
|
| 查看次数: |
17818 次 |
| 最近记录: |