I'm trying to migrate a MySql database to Postgresql. I am using JPA and was using Eclipse Link for the MySQL database, but I am switching to Hibernate for the Postgresql database.
The following JPA annotations work with 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;
With Hibernate, I get the following error message:
org.hibernate.AnnotationException: Associations marked as mappedBy must not define database mappings like @JoinTable or @JoinColumn
How can I get it to work with Hibernate? It is important that the database schema does not change, because I want to dump the MySql database into the Postgresql database, without modifying any tables or column names.
Cheers,
Dominik
Mapped by means that Hibernate should look/track the other side of the relation, so try to move the joined table to the other side of the relation:
UserBean:
@OneToMany(mappedBy = "sender", cascade = CascadeType.ALL)
private List<MessageBean> messagesSent;
@OneToMany(mappedBy = "receiver", cascade = CascadeType.ALL)
private List<MessageBean> messagesReceived;
MessageBean:
@ManyToOne
@JoinTable(name = "MESSAGES_SENT")
private UserBean sender;
@ManyToOne
@JoinTable(name = "MESSAGES_RECEIVED")
private UserBean receiver;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With