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.