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;