All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.basics.spring.messaging.entity.MessageData Maven / Gradle / Ivy

package fi.evolver.basics.spring.messaging.entity;

import java.util.List;

import jakarta.persistence.*;


@Entity
@Table(name="message_data")
@NamedQuery(name="MessageData.findReadyForDeletion", query=
		"SELECT d.id FROM MessageData d, Message m WHERE " +
		"  m.messageData.id = d.id " +
		"GROUP BY d.id HAVING " +
		"  count(CASE WHEN m.state NOT IN ('SENT', 'FAILED', 'DISABLED') THEN 1 ELSE NULL END) = 0 AND " +
		"  max(m.lastUpdatedTime) < :maxUpdateTime " +
		"ORDER BY max(m.lastUpdatedTime)")
public class MessageData {

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id;

	@Column(name="compressed_data")
	private byte[] compressedData;

	@OneToMany(mappedBy="messageData", cascade=CascadeType.ALL, fetch=FetchType.EAGER)
	private List metadata;


	MessageData() { }

	public MessageData(byte[] compressedData, List metadata) {
		this.compressedData = compressedData;
		this.metadata = metadata;
		metadata.stream().forEach(m -> m.setMessageData(this));
	}


	public long getId() {
		return id;
	}

	public byte[] getCompressedData() {
		return compressedData;
	}

	public List getMetadata() {
		return metadata;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy