Transient members
zauberlehrling Mar 2, 2006 6:03 AMHello,
I have a question concerning transient members. In the follwoing code there is an Entity Bean:
package entities; import java.io.Serializable; import java.util.*; import javax.persistence.*; @Entity public class Node implements Serializable { private int id; private String persistentText; private String transientText; public Node(){} public Node(int id) { setId(id); } @Id public int getId() { return id; } public void setId(int id) { this.id = id; } public String getPersistentText() { return persistentText; } public void setPersistentText(String persistentText) { this.persistentText = persistentText; } @Transient public String getTransientText() { return transientText; } public void setTransientText(String transientText) { this.transientText = transientText; } }
a Session Bean:
package server.sessions; import javax.ejb.*; import javax.persistence.*; import org.hibernate.*; import entities.*; import java.util.*; @Stateful public class ClientSessionBean implements ClientSessionLocal, ClientSessionRemote{ @PersistenceContext private EntityManager manager; List<Node> nodes; Node node; public void createNode() { node = new Node(1); node.setTransientText("transient"); node.setPersistentText("persistent"); manager.persist(node); nodes = manager.createQuery("from Node where id=1").getResultList(); node = nodes.get(0); System.out.println("createNode persistentText: "+node.getPersistentText()); System.out.println("createNode transientText: "+node.getTransientText()); } public void showNode() { nodes = manager.createQuery("from Node where id=1").getResultList(); node = nodes.get(0); System.out.println("showNode persistentText: "+node.getPersistentText()); System.out.println("showNode transientText: "+node.getTransientText()); } }
and a client, which calls the two methods createNode() and showNode():
package client; import javax.naming.InitialContext; import java.util.*; import entities.*; import server.sessions.*; public class Client { static ClientSession clientSession; public static void main(String[] args) { try { Hashtable<String,String> env = new Hashtable<String,String>(); env.put("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory"); env.put("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces"); env.put("java.naming.provider.url", "localhost"); InitialContext ctx = new InitialContext(env); clientSession = (ClientSession)ctx.lookup("ClientSessionBean/remote"); clientSession.createNode(); clientSession.showNode(); } catch (Exception e) { System.out.println(e); } } }
I get the following answer:
..
10:59:02,531 INFO [STDOUT] createNode persistentText: persistent
10:59:02,531 INFO [STDOUT] createNode transientText: transient
10:59:02,562 INFO [STDOUT] showNode persistentText: persistent
10:59:02,562 INFO [STDOUT] showNode transientText: null
..
Is the last line correct? I've exptected the last line:
10:59:02,562 INFO [STDOUT] showNode transientText: transient
Thanks for your efforts.