Obiekty jPALIO typu JPA Mapping Class

Za pomocą typu JPA Mapping Class jPALIO jest w stanie określić, które z klas zdefiniowanych w obiektach jPALIO są klasami odpowiedzialnymi za mapowanie. Dzięki wprowadzeniu nowego typu obiektu nie ma potrzeby umieszczania klas mapujących w konfiguracji konektora Hibernate. Każdy z obiektów tego typu powinien zawierać adnotację @Assigned.

Implementacja przykładowego obiektu dla tabeli P_USERS:

package palio.model;
 
import palio.annotations.*;
import javax.persistence.*;
 
@Assigned(connector="connector_name")
 
@Entity
@Table(name = "p_users", uniqueConstraints = @UniqueConstraint(columnNames = "login"))
public class PUser implements java.io.Serializable {
 
    private long id;
    private char status;
    private String language;
    private Date expireDate;
    private Short expireSessions;
    private Short maxSessions;
    private Integer sessionTimeout;
    private Integer maxSessionDurat;
    private Date lastLogin;
    private Date lastWrongLogin;
    private String login;
    private byte[] password;
    private Set<PSession> pSessions = new HashSet<PSession>(0);
 
    public PUser() {}
 
    public PUser(long id, char status, String login) {
        this.id = id;
        this.status = status;
        this.login = login;
    }
 
    public PUser(long id, char status, String language, Date expireDate, Short expireSessions, Short maxSessions, Integer sessionTimeout,
            Integer maxSessionDurat, Date lastLogin, Date lastWrongLogin, String login, byte[] password, Set<PSession> pSessions) {
        this.id = id;
        this.status = status;
        this.language = language;
        this.expireDate = expireDate;
        this.expireSessions = expireSessions;
        this.maxSessions = maxSessions;
        this.sessionTimeout = sessionTimeout;
        this.maxSessionDurat = maxSessionDurat;
        this.lastLogin = lastLogin;
        this.lastWrongLogin = lastWrongLogin;
        this.login = login;
        this.password = password;
        this.pSessions = pSessions;
    }
 
    @Id
    @Column(name = "id", unique = true, nullable = false, precision = 12, scale = 0)
    @SequenceGenerator(sequenceName = "p_sessions_s", name = "p_sessions", allocationSize = 1, initialValue = 1)
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "p_sessions")
    public long getId() {
        return this.id;
    }
 
    public void setId(long id) {
        this.id = id;
    }
 
    @Column(name = "status", nullable = false, length = 1)
    public char getStatus() {
        return this.status;
    }
 
    public void setStatus(char status) {
        this.status = status;
    }
 
    @Column(name = "language", length = 2)
    public String getLanguage() {
        return this.language;
    }
 
    public void setLanguage(String language) {
        this.language = language;
    }
 
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "expire_date", length = 29)
    public Date getExpireDate() {
        return this.expireDate;
    }
 
    public void setExpireDate(Date expireDate) {
        this.expireDate = expireDate;
    }
 
    @Column(name = "expire_sessions", precision = 3, scale = 0)
    public Short getExpireSessions() {
        return this.expireSessions;
    }
 
    public void setExpireSessions(Short expireSessions) {
        this.expireSessions = expireSessions;
    }
 
    @Column(name = "max_sessions", precision = 3, scale = 0)
    public Short getMaxSessions() {
        return this.maxSessions;
    }
 
    public void setMaxSessions(Short maxSessions) {
        this.maxSessions = maxSessions;
    }
 
    @Column(name = "session_timeout", precision = 6, scale = 0)
    public Integer getSessionTimeout() {
        return this.sessionTimeout;
    }
 
    public void setSessionTimeout(Integer sessionTimeout) {
        this.sessionTimeout = sessionTimeout;
    }
 
    @Column(name = "max_session_durat", precision = 8, scale = 0)
    public Integer getMaxSessionDurat() {
        return this.maxSessionDurat;
    }
 
    public void setMaxSessionDurat(Integer maxSessionDurat) {
        this.maxSessionDurat = maxSessionDurat;
    }
 
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "last_login", length = 29)
    public Date getLastLogin() {
        return this.lastLogin;
    }
 
    public void setLastLogin(Date lastLogin) {
        this.lastLogin = lastLogin;
    }
 
    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "last_wrong_login", length = 29)
    public Date getLastWrongLogin() {
        return this.lastWrongLogin;
    }
 
    public void setLastWrongLogin(Date lastWrongLogin) {
        this.lastWrongLogin = lastWrongLogin;
    }
 
    @Column(name = "login", unique = true, nullable = false, length = 50)
    public String getLogin() {
        return this.login;
    }
 
    public void setLogin(String login) {
        this.login = login;
    }
 
    @Column(name = "password")
    public byte[] getPassword() {
        return this.password;
    }
 
    public void setPassword(byte[] password) {
        this.password = password;
    }
 
    @OneToMany(fetch = FetchType.LAZY, mappedBy = "PUser")
    public Set<PSession> getPSessions() {
        return this.pSessions;
    }
 
    public void setPSessions(Set<PSession> pSessions) {
        this.pSessions = pSessions;
    }
 
}