package com.juick.service.data.entities; import javax.persistence.*; import java.io.Serializable; import java.time.Instant; import java.util.HashSet; import java.util.Set; @Entity @Table(name = "messages") public class MessageEntity implements Serializable { @Id @Column(name = "message_id", columnDefinition = "int(10) unsigned auto_increment", nullable = false, unique = true) @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "message") private Set tags = new HashSet<>(); @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "message") private Set replies = new HashSet<>(); @OneToOne(cascade = CascadeType.ALL, mappedBy = "message") private TextEntity textEntity; @ManyToOne(cascade = CascadeType.ALL) private UserEntity user; @Column(name = "ts") private Instant ts; public MessageEntity() { this.textEntity = new TextEntity(this); } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Set getTags() { return tags; } public void setTags(Set tags) { this.tags = tags; } public Set getReplies() { return replies; } public void setReplies(Set replies) { this.replies = replies; } public String getText() { return textEntity.getText(); } public void setText(String text) { this.textEntity.setText(text); } public UserEntity getUser() { return user; } public void setUser(UserEntity user) { this.user = user; } public Instant getTimestamp() { return ts; } public void setTimestamp(Instant ts) { this.ts = ts; } }