I'm trying to use spring data with mongo-db cross-store functionality in wicket. NotSerializable errors occur because the aspectj maven plugin weaves member variables into my domain objects such as:
public org.springframework.data.crossstore.ChangeSet com.navteq.tm.request.model.Client.ajc$interField$ org_springframework_data_mongodb_crossstore_MongoD ocumentBacking$org_springframework_data_mongodb_cr ossstore_DocumentBacked$changeSet [class=org.springframework.data.crossstore.HashMapC hangeSet
which turn out to be not serializable. What can I do to resolve this? I figure I need to either get the plugin to generate these variables as transient, or get apache wicket to somehow ignore those member variables. Anybody have any clues? Ideas?
Here's a sample of a woven class that I've decompiled. Notice the fields marked as @Transient. These are great for JPA, but when trying to use this object in Wicket, horrible horrible serialization errors occur because classes such as ChangeSet are not serializable.
Code:@Entity(name="com.navteq.tm.request.model.Client") @Table(name="tm_client") public class Client implements Serializable, DocumentBacked { private static final long serialVersionUID = VersionUtil.getSerialVersionUID(); @Id @GeneratedValue private int id; @Column(unique=true, length=255, nullable=false) private String name; private boolean active; @OneToMany(targetEntity=ClientInfoName.class, fetch=FetchType.LAZY, cascade={javax.persistence.CascadeType.ALL}, mappedBy="id.client") private Set<ClientInfoName> clientInfoNames; @Transient public ChangeSet ajc$interField$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$changeSet; @Transient public ChangeSetPersister ajc$interField$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdChangeSetPersister; @Transient public ChangeSetBackedTransactionSynchronization ajc$interField$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdTransactionSynchronization; public Client() { MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$changeSet(this); MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdChangeSetPersister(this); MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdTransactionSynchronization(this); MongoDocumentBacking.aspectOf().ajc$before$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$2$adf21a1(this); } public Client(String name) { MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$changeSet(this); MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdChangeSetPersister(this); MongoDocumentBacking.ajc$interFieldInit$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdTransactionSynchronization(this); MongoDocumentBacking.aspectOf().ajc$before$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$2$adf21a1(this); this.name = name; } public int getId() { return this.id; } public void setId(int id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public boolean isActive() { return this.active; } public void setActive(boolean active) { this.active = active; } public Set<ClientInfoName> getClientInfoNames() { if (this.clientInfoNames == null) { this.clientInfoNames = new HashSet(); } return this.clientInfoNames; } public void setClientInfoNames(Set<ClientInfoName> clientInfoNames) { this.clientInfoNames = clientInfoNames; } public String toString() { return ToStringBuilder.reflectionToString(this); } public int hashCode() { return new HashCodeBuilder(1, 31).append(getId()).toHashCode(); } public boolean equals(Object obj) { if ((obj != null) && (obj instanceof Client)) { if (obj == this) { return true; } Client client = (Client)obj; return new EqualsBuilder().append(getId(), client.getId()).isEquals(); } return false; } public void flush() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$flush(this); } public ChangeSet getChangeSet() { return MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$getChangeSet(this); } public Object get_persistent_id() { return MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$get_persistent_id(this); } @PostLoad public void itdPostLoad() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdPostLoad(this); } @PostPersist public void itdPostPersist() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdPostPersist(this); } @PostRemove public void itdPostRemove() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdPostRemove(this); } @PostUpdate public void itdPostUpdate() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdPostUpdate(this); } @PreUpdate public void itdPreUpdate() { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$itdPreUpdate(this); } public void setChangeSet(ChangeSet paramChangeSet) { MongoDocumentBacking.ajc$interMethod$org_springframework_data_mongodb_crossstore_MongoDocumentBacking$org_springframework_data_mongodb_crossstore_DocumentBacked$setChangeSet(this, paramChangeSet); } }


Reply With Quote
