73 lines
2.1 KiB
Java
73 lines
2.1 KiB
Java
package at.procon.dip.clustering.entity;
|
|
|
|
import at.procon.dip.architecture.SchemaNames;
|
|
import jakarta.persistence.Column;
|
|
import jakarta.persistence.Entity;
|
|
import jakarta.persistence.FetchType;
|
|
import jakarta.persistence.GeneratedValue;
|
|
import jakarta.persistence.GenerationType;
|
|
import jakarta.persistence.Id;
|
|
import jakarta.persistence.Index;
|
|
import jakarta.persistence.JoinColumn;
|
|
import jakarta.persistence.ManyToOne;
|
|
import jakarta.persistence.PrePersist;
|
|
import jakarta.persistence.Table;
|
|
import java.time.OffsetDateTime;
|
|
import java.util.UUID;
|
|
import lombok.AllArgsConstructor;
|
|
import lombok.Builder;
|
|
import lombok.Getter;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.Setter;
|
|
import org.hibernate.annotations.JdbcTypeCode;
|
|
import org.hibernate.type.SqlTypes;
|
|
|
|
@Entity
|
|
@Table(schema = SchemaNames.DOC, name = "doc_embedding_cluster", indexes = {
|
|
@Index(name = "idx_doc_cluster_cluster_run_jpa", columnList = "cluster_run_id")
|
|
})
|
|
@Getter
|
|
@Setter
|
|
@NoArgsConstructor
|
|
@AllArgsConstructor
|
|
@Builder
|
|
public class EmbeddingCluster {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.UUID)
|
|
private UUID id;
|
|
|
|
@ManyToOne(fetch = FetchType.LAZY, optional = false)
|
|
@JoinColumn(name = "cluster_run_id", nullable = false)
|
|
private EmbeddingClusterRun clusterRun;
|
|
|
|
@Column(name = "cluster_label", nullable = false)
|
|
private Integer clusterLabel;
|
|
|
|
@Column(name = "display_name", length = 255)
|
|
private String displayName;
|
|
|
|
@Column(name = "item_count", nullable = false)
|
|
private Long itemCount;
|
|
|
|
@Builder.Default
|
|
@Column(name = "is_noise_cluster", nullable = false)
|
|
private boolean noiseCluster = false;
|
|
|
|
@Column(name = "summary_text", columnDefinition = "TEXT")
|
|
private String summaryText;
|
|
|
|
@JdbcTypeCode(SqlTypes.JSON)
|
|
@Column(name = "top_terms_json", columnDefinition = "jsonb")
|
|
private String topTermsJson;
|
|
|
|
@Builder.Default
|
|
@Column(name = "created_at", nullable = false, updatable = false)
|
|
private OffsetDateTime createdAt = OffsetDateTime.now();
|
|
|
|
@PrePersist
|
|
protected void onCreate() {
|
|
createdAt = OffsetDateTime.now();
|
|
}
|
|
}
|