package com.openisle.model; import com.fasterxml.jackson.annotation.JsonBackReference; import jakarta.persistence.*; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; import org.hibernate.annotations.CreationTimestamp; import java.time.LocalDateTime; @Entity @Getter @Setter @NoArgsConstructor @Table(name = "messages") public class Message { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "conversation_id") @JsonBackReference private MessageConversation conversation; @ManyToOne(optional = false, fetch = FetchType.LAZY) @JoinColumn(name = "sender_id") private User sender; @Column(nullable = false, columnDefinition = "TEXT") private String content; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "reply_to_id") private Message replyTo; @CreationTimestamp @Column(nullable = false, updatable = false) private LocalDateTime createdAt; }