Payload.java

package com.tradecloud.domain.model.messagestore;

import com.tradecloud.common.base.PersistenceBase;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.hibernate.annotations.Type;

import javax.persistence.*;

/**
 * Contains the raw message payload.
 * <p>
 * Lob: http://relation.to/15492.lace
 * <p>
 * <p>
 * http://www.shredzone.de/cilla/page/299/string-
 * lobs-on-postgresql-with-hibernate-36.html
 * <p>
 * https://hibernate.onjira.com/browse/HHH-6105
 */
@Entity
@Table(name = "payload")
@Access(AccessType.FIELD)
public class Payload extends PersistenceBase {

    private static final long serialVersionUID = 1L;

    /**
     * RAW payload.
     */
    @Lob
    @Basic(fetch = FetchType.LAZY)
    @Type(type = "org.hibernate.type.TextType")
    private String text;

    @SuppressWarnings("unused")
    private Payload() {
    }

    public Payload(final String text) {
        this.text = text;
    }

    /**
     * @return the text
     */
    public String getText() {
        return text;
    }

    @Override
    public String toString() {
        return "Payload [text=" + text + "]";
    }

    @Override
    public boolean equals(final Object other) {
        if (!(other instanceof Payload)) {
            return false;
        }
        Payload castOther = (Payload) other;
        return new EqualsBuilder().append(text, castOther.text).isEquals();
    }

    @Override
    public int hashCode() {
        return new HashCodeBuilder().append(text).toHashCode();
    }

}