Can someone tell me why this code throws NotSerializableException:

package com.gint.scm.ejb.entity;
  | 
  | import java.io.Serializable;
  | import java.util.Collection;
  | 
  | import javax.ejb.Local;
  | import javax.persistence.Column;
  | import javax.persistence.Entity;
  | import javax.persistence.GeneratorType;
  | import javax.persistence.Id;
  | import javax.persistence.OneToMany;
  | import javax.persistence.Table;
  | 
  | @SuppressWarnings("serial")
  | @Entity
  | @Local
  | @Table(name = "application")
  | public class Application implements Serializable{
  |     private long id;
  | 
  |     private String name;
  |     
  |     private Collection<Version> versions;
  | 
  |     public Application() {
  |     }
  | 
  |     public Application(String name) {
  |             this.name = name;
  |     }
  | 
  |     @Id(generate=GeneratorType.AUTO)
  |     public long getId() {
  |             return id;
  |     }
  | 
  |     public void setId(long id) {
  |             this.id = id;
  |     }
  | 
  |     @Column(name="name")
  |     public String getName() {
  |             return name;
  |     }
  | 
  |     public void setName(String name) {
  |             this.name = name;
  |     }
  | 
  |     @OneToMany
  |     public Collection<Version> getVersions() {
  |             return versions;
  |     }
  | 
  |     public void setVersions(Collection<Version> versions) {
  |             this.versions = versions;
  |     }
  | }
  | 

package com.gint.scm.ejb.entity;
  | 
  | import javax.ejb.Local;
  | import javax.persistence.AttributeOverride;
  | import javax.persistence.AttributeOverrides;
  | import javax.persistence.Column;
  | import javax.persistence.EmbeddedId;
  | import javax.persistence.Entity;
  | import javax.persistence.JoinColumn;
  | import javax.persistence.ManyToOne;
  | import javax.persistence.Table;
  | 
  | @SuppressWarnings("serial")
  | @Entity
  | @Local
  | @Table(name = "version")
  | public class Version {
  | 
  |     String versionMark;
  |     
  |     Application application;
  |     
  |     VersionPK versionPK;
  | 
  |     @EmbeddedId
  |     @AttributeOverrides({
  |             @AttributeOverride(name="versionMark",column = 
@Column(name="versionMark")),
  |             @AttributeOverride(name="applicationId",column = 
@Column(name="applicationId"))
  |     })
  |     public VersionPK getVersionPK() {
  |             return versionPK;
  |     }
  | 
  |     public void setVersionPK(VersionPK versionPK) {
  |             this.versionPK = versionPK;
  |     }
  |     
  |     @ManyToOne
  |     @JoinColumn(name="applicationId",insertable=false,updatable=false)
  |     public Application getApplication() {
  |             return application;
  |     }
  |     
  |     public void setApplication(Application application){
  |             this.application = application;
  |     }
  | }
package com.gint.scm.ejb.entity;
  | 
  | import java.io.Serializable;
  | 
  | @SuppressWarnings("serial")
  | public class VersionPK implements Serializable {
  | 
  |     private String versionMark;
  | 
  |     private long applicationId;
  | 
  |     public VersionPK() {
  |     }
  | 
  |     public VersionPK(String versionMark, long applicationId) {
  |             this.versionMark = versionMark;
  |             this.applicationId = applicationId;
  |     }
  | 
  |     public long getApplicationId() {
  |             return applicationId;
  |     }
  | 
  |     public void setApplicationId(long applicationId) {
  |             this.applicationId = applicationId;
  |     }
  | 
  |     public String getVersionMark() {
  |             return versionMark;
  |     }
  | 
  |     public void setVersionMark(String versionMark) {
  |             this.versionMark = versionMark;
  |     }
  | 
  |     public int hashCode() {
  |             return (int) versionMark.hashCode()
  |                             + (int) (new Long(applicationId)).hashCode();
  |     }
  | 
  |     public boolean equals(Object obj) {
  |             if (obj == this)
  |                     return true;
  |             if (!(obj instanceof VersionPK))
  |                     return false;
  |             if (obj == null)
  |                     return false;
  |             VersionPK pk = (VersionPK) obj;
  |             return pk.versionMark.equals(versionMark)
  |                             && pk.applicationId == applicationId;
  |     }
  | 
  | }
  | 

Creating works fine for both entities, find (by primary key) works also. The 
problem is if I perform find for Version entity and try to pass it to remote 
client.
NotSerializableException for Version entity.
I must say that everything works fine within container - find returns Version 
entity to the stateless session bean that is used as the facade. Exception is 
trown if Version entity is passed to the remote client from the facade.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3919228#3919228

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3919228


-------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc. Do you grep through log files
for problems?  Stop!  Download the new AJAX search engine that makes
searching your log files as easy as surfing the  web.  DOWNLOAD SPLUNK!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=103432&bid=230486&dat=121642
_______________________________________________
JBoss-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user

Reply via email to