/* * Copyright (C) 2008-2024, Juick * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ package com.juick.data.entities; import jakarta.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") @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; @ManyToMany @JoinTable(name = "messages_tags", joinColumns = @JoinColumn(name = "message_id"), inverseJoinColumns = @JoinColumn(name = "tag_id") ) private Set tags = new HashSet<>(); @OneToMany(mappedBy = "message") private Set replies = new HashSet<>(); @ManyToOne(cascade = CascadeType.MERGE) private UserEntity user; @Column(name = "ts") private Instant ts; @Column(name = "txt") private String text; 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 text; } public void setText(String text) { this.text = 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; } }