/* * 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; @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) @PrimaryKeyJoinColumn private TextEntity textEntity; @ManyToOne(cascade = CascadeType.ALL) private UserEntity user; @Column(name = "ts") private Instant ts; public MessageEntity() { this.textEntity = new TextEntity(); } 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; } }