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;
}
}