
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