package example; import javax.persistence.*; import javax.naming.InitialContext; import javax.naming.Context; /** * Bean to handle a user. * * <code><pre> * CREATE TABLE amber_session_user ( * id INTEGER * name VARCHAR(255), * quest VARCHAR(255), * color VARCHAR(255), * * PRIMARY KEY(id) * ); * </pre></code> */ @Entity @Table(name="amber_session_user") public class User { @Id @Column(name="id") @GeneratedValue private int _id; @Basic @Column(name="name") private String _name; @Basic @Column(name="quest") private String _quest; @Basic @Column(name="color") private String _color; public User() { } public User(String name, String quest, String color) { _name = name; _quest = quest; _color = color; } /** * Returns the ID of the user. */ public int getId() { return _id; } public void setId(int id) { _id = id; } /** * Returns the user's name */ public String getName() { return _name; } /** * Returns the user's quest */ public String getQuest() { return _quest; } /** * Returns the user's favorite color */ public String getColor() { return _color; } /** * When serializing, replace with the UserHandle instead. */ private Object writeReplace() { return new UserHandle(_id); } static class UserHandle { private int _id; UserHandle(int id) { _id = id; } /** * When deserializing return the User. */ private Object readResolve() { try { // get Amber's EntityManager from JNDI Context ic = new InitialContext(); EntityManager manager = (EntityManager) ic.lookup("java:comp/env/persistence/PersistenceContext/example"); // find the user object return manager.find(User.class, _id); } catch (Exception e) { throw new RuntimeException(e); } } } }