It's a bidirectional pojo with other entities.
package com.dnt.miti.model;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import org.apache.commons.lang.builder.EqualsBuilder;
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;
import org.hibernate.annotations.GenericGenerator;
/**
* @author Fadhli
*
*/
@Entity
@Table(name="MITI_MAIN")
public class MitiMain extends MitiBaseObject {
private static final long serialVersionUID = 6274442145165414974L;
private String appId;
private String referenceNo;
private String endorsementNo;
private String appType;
private String appStatus;
private String appTransactionType;
private String appCase;
private String traderCode;
private String applicationMode;
private String counterNo;
private Date effectiveDate;
private Date expiryDate;
private String branchCode;
private Date appDate;
private String companyName;
private MitiAddress companyAddress;
private String phoneNo;
private String mobileNo;
private String faxNo;
private String email;
private String declarantName;
private String declarantDesignation;
private String declarantIcNo;
private String declarantPhoneNo;
private Date declarationDate;
private String traderRefNo;
private Date approveDate;
private Character notificationType;
private String notificationEmail;
private String authFormDApplicant;
private String authFormDDesignation;
private String authFormDIcNo;
private Set<MitiFinishedProduct> finishedProducts = new
HashSet<MitiFinishedProduct>();
private Set<MitiTransactions> mitiTransactions = new
HashSet<MitiTransactions>();
private Set<MitiFormDDetail> mitiFormDDetails = new
HashSet<MitiFormDDetail>();
/**
* No-arg constructor for JavaBean tools.
*/
public MitiMain(){}
/**
* Database Identifier
* @return appId (primary key)
*/
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "MM_APP_ID")
public String getAppId() {
return appId;
}
@Column(name = "MM_REFERENCE_NO", length = 30)
public String getReferenceNo() {
return referenceNo;
}
@Column(name = "MM_ENDORSEMENT_NO", length = 30)
public String getEndorsementNo() {
return endorsementNo;
}
@Column(name = "MM_APP_TYPE", length = 30)
public String getAppType() {
return appType;
}
@Column(name = "MM_APP_STATUS", length = 3)
public String getAppStatus() {
return appStatus;
}
@Column(name = "MM_APP_TRANSACTION_TYPE", length = 3)
public String getAppTransactionType() {
return appTransactionType;
}
@Column(name = "MM_APP_CASE", length = 10)
public String getAppCase() {
return appCase;
}
@Column(name = "MM_TRADER_CODE", length = 15)
public String getTraderCode() {
return traderCode;
}
@Column(name = "MM_APPLICATION_MODE", length = 1)
public String getApplicationMode() {
return applicationMode;
}
@Column(name = "MM_COUNTER_NO", length = 15)
public String getCounterNo() {
return counterNo;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MM_EFFECTIVE_DATE")
public Date getEffectiveDate() {
return effectiveDate;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MM_EXPIRY_DATE")
public Date getExpiryDate() {
return expiryDate;
}
@Column(name = "MM_BRANCH_CODE", length = 3)
public String getBranchCode() {
return branchCode;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MM_APP_DATE")
public Date getAppDate() {
return appDate;
}
@Column(name = "MM_COMPANY_NAME", length = 35)
public String getCompanyName() {
return companyName;
}
@Embedded
@AttributeOverrides( {
@AttributeOverride(name = "address1", column = @Column(name =
"MM_COMPANY_ADDRESS1", length = 35)),
@AttributeOverride(name = "address2", column = @Column(name =
"MM_COMPANY_ADDRESS2", length = 35)),
@AttributeOverride(name = "address3", column = @Column(name =
"MM_COMPANY_ADDRESS3", length = 35)),
@AttributeOverride(name = "city", column = @Column(name =
"MM_CITY", length = 30)),
@AttributeOverride(name = "state", column = @Column(name =
"MM_STATE", length = 30)),
@AttributeOverride(name = "countryCode", column = @Column(name =
"MM_COUNTRY_CODE", length = 3)),
@AttributeOverride(name = "countryDesc", column = @Column(name =
"MM_COUNTRY_DESC", length = 30)),
@AttributeOverride(name = "postCode", column = @Column(name =
"MM_POST_CODE", length = 10)) })
public MitiAddress getCompanyAddress() {
return companyAddress;
}
@Column(name = "MM_TELEPHONE_NO", length = 15)
public String getPhoneNo() {
return phoneNo;
}
@Column(name = "MM_MOBILE_NO", length = 15)
public String getMobileNo() {
return mobileNo;
}
@Column(name = "MM_EMAIL", length = 15)
public String getEmail() {
return email;
}
@Column(name = "MM_FAX_NO", length = 15)
public String getFaxNo() {
return faxNo;
}
@Column(name = "MM_DECL_NAME", length = 50)
public String getDeclarantName() {
return declarantName;
}
@Column(name = "MM_DECL_DESIGN", length = 30)
public String getDeclarantDesignation() {
return declarantDesignation;
}
@Column(name = "MM_DECL_IC_NO", length = 16)
public String getDeclarantIcNo() {
return declarantIcNo;
}
@Column(name = "MM_DECL_PHONE_NO", length = 15)
public String getDeclarantPhoneNo() {
return declarantPhoneNo;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MM_DECL_DATE")
public Date getDeclarationDate() {
return declarationDate;
}
@Column(name = "MM_TRADER_REF_NO", length = 30)
public String getTraderRefNo() {
return traderRefNo;
}
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "MM_APPROVED_DATE")
public Date getApproveDate() {
return approveDate;
}
@Column(name = "CAD_NOTIFICATION_TYPE", length = 1)
public Character getNotificationType() {
return notificationType;
}
@Column(name = "CAD_NOTIFICATION_EMAIL", length = 30)
public String getNotificationEmail() {
return notificationEmail;
}
@Column(name = "CAD_AUTH_FORMD_APPLICANT", length = 10)
public String getAuthFormDApplicant() {
return authFormDApplicant;
}
@Column(name = "CAD_AUTH_FORMD_DESIGN", length = 3)
public String getAuthFormDDesignation() {
return authFormDDesignation;
}
@Column(name = "CAD_AUTH_FORMD_IC_NO", length = 20)
public String getAuthFormDIcNo() {
return authFormDIcNo;
}
@OneToMany(fetch = FetchType.LAZY,
cascade ={CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REMOVE},
mappedBy="mitiMain")
@org.hibernate.annotations.Cascade(
org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Set<MitiFinishedProduct> getFinishedProducts() {
return finishedProducts;
}
/**
* To Add MitiFinishedProduct to MitiMain
* @param MitiFinishedProduct finishProduct
*/
public void addMitiFinishedProduct(MitiFinishedProduct finishProduct){
if(finishProduct == null)
throw new IllegalArgumentException("Can't add a null Finished
Product!");
finishProduct.setMitiMain(this); //Set the inverse side to this
object (MitiMain)
this.getFinishedProducts().add(finishProduct);
}
@OneToMany(fetch = FetchType.LAZY,
cascade ={CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REMOVE},
mappedBy="mitiMain")
@org.hibernate.annotations.Cascade(
org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Set<MitiTransactions> getMitiTransactions() {
return mitiTransactions;
}
/**
* To Add MitiTransactions to MitiMain
* @param MitiTransactions mitiTx
*/
public void addMitiTransaction(MitiTransactions mitiTx) {
if(mitiTx == null)
throw new IllegalArgumentException("Can't add null
MitiTransaction object");
mitiTx.setMitiMain(this);
this.getMitiTransactions().add(mitiTx);
}
@OneToMany(fetch = FetchType.LAZY,
cascade ={CascadeType.PERSIST, CascadeType.MERGE,
CascadeType.REMOVE},
mappedBy="mitiMain")
@org.hibernate.annotations.Cascade(
org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
public Set<MitiFormDDetail> getMitiFormDDetails() {
return mitiFormDDetails;
}
/**
* To Add MitiFormDDetail to MitiMain
* @param MitiFormDDetail formDdetail
*/
public void addMitiFormDDetail(MitiFormDDetail formDdetail) {
if(formDdetail == null)
throw new IllegalArgumentException("Can't add null
MitiTransaction object");
formDdetail.setMitiMain(this);
this.getMitiFormDDetails().add(formDdetail);
}
public void setMitiFormDDetails(Set<MitiFormDDetail> mitiFormDDetails) {
this.mitiFormDDetails = mitiFormDDetails;
}
public void setMitiTransactions(Set<MitiTransactions> mitiTransactions)
{
this.mitiTransactions = mitiTransactions;
}
public void setFinishedProducts(Set<MitiFinishedProduct>
finishedProducts) {
this.finishedProducts = finishedProducts;
}
public void setAppId(String appId) {
this.appId = appId;
}
public void setAppCase(String appCase) {
this.appCase = appCase;
}
public void setTraderCode(String traderCode) {
this.traderCode = traderCode;
}
public void setApplicationMode(String applicationMode) {
this.applicationMode = applicationMode;
}
public void setApproveDate(Date approveDate) {
this.approveDate = approveDate;
}
public void setAppStatus(String appStatus) {
this.appStatus = appStatus;
}
public void setAppTransactionType(String appTransactionType) {
this.appTransactionType = appTransactionType;
}
public void setAppType(String appType) {
this.appType = appType;
}
public void setAuthFormDApplicant(String authFormDApplicant) {
this.authFormDApplicant = authFormDApplicant;
}
public void setAuthFormDDesignation(String authFormDDesignation) {
this.authFormDDesignation = authFormDDesignation;
}
public void setAuthFormDIcNo(String authFormDIcNo) {
this.authFormDIcNo = authFormDIcNo;
}
public void setBranchCode(String branchCode) {
this.branchCode = branchCode;
}
public void setCompanyAddress(MitiAddress companyAddress) {
this.companyAddress = companyAddress;
}
public void setCompanyName(String companyName) {
this.companyName = companyName;
}
public void setCounterNo(String counterNo) {
this.counterNo = counterNo;
}
public void setDeclarantDesignation(String declarantDesignation) {
this.declarantDesignation = declarantDesignation;
}
public void setDeclarantIcNo(String declarantIcNo) {
this.declarantIcNo = declarantIcNo;
}
public void setDeclarantName(String declarantName) {
this.declarantName = declarantName;
}
public void setDeclarantPhoneNo(String declarantPhoneNo) {
this.declarantPhoneNo = declarantPhoneNo;
}
public void setDeclarationDate(Date declarationDate) {
this.declarationDate = declarationDate;
}
public void setEffectiveDate(Date effectiveDate) {
this.effectiveDate = effectiveDate;
}
public void setEmail(String email) {
this.email = email;
}
public void setEndorsementNo(String endorsementNo) {
this.endorsementNo = endorsementNo;
}
public void setExpiryDate(Date expiryDate) {
this.expiryDate = expiryDate;
}
public void setFaxNo(String faxNo) {
this.faxNo = faxNo;
}
public void setMobileNo(String mobileNo) {
this.mobileNo = mobileNo;
}
public void setNotificationEmail(String notificationEmail) {
this.notificationEmail = notificationEmail;
}
public void setNotificationType(Character notificationType) {
this.notificationType = notificationType;
}
public void setPhoneNo(String phoneNo) {
this.phoneNo = phoneNo;
}
public void setReferenceNo(String referenceNo) {
this.referenceNo = referenceNo;
}
public void setTraderRefNo(String traderRefNo) {
this.traderRefNo = traderRefNo;
}
public void setAppDate(Date appDate) {
this.appDate = appDate;
}
/**
* <p>When using Hibernate w/ entities mapped with assigned keys, the
* equals/hashCode methods should include the members corresponding
* to the assigned key which is known as the business key</p>
*
* <p>A business key is a property, or some combination of properties,
* that is unique for each instance with the same database identity.
* Unlike a natural primary key, it isn't an absolute requirement
* that the business key never changes—as long as it changes rarely,
* that's enough</p>
*
* <p>A business key can also be an information that has meaning to
* the real world. For instance : username is a good biz key as
* it cannot be change or change rarely</p>
*
* <p>This would ensure that the object created is consistent at
* all times with respect to its identity.</p>
*
* @see java.lang.Object#equals(Object)
*/
public boolean equals(Object object) {
if (this == object) return true;
if (!(object instanceof MitiMain)) {
return false;
}
MitiMain rhs = (MitiMain) object;
return new EqualsBuilder().append(this.referenceNo, rhs.referenceNo
).isEquals();
}
/**
* @see java.lang.Object#hashCode()
*/
public int hashCode() {
return new HashCodeBuilder(-2029089885, 17027211).append(
this.referenceNo).toHashCode();
}
/**
* Returns the string representation of this object
* @see java.lang.Object#toString()
*/
public String toString() {
return new ToStringBuilder(this, ToStringStyle.SIMPLE_STYLE)
.append("endorsementNo",this.endorsementNo)
.append("declarantDesignation",this.declarantDesignation)
.append("declarantName",this.declarantName)
.append("notificationEmail",this.notificationEmail)
.append("faxNo", this.faxNo)
.append("counterNo", this.counterNo)
.append("appId", this.appId)
.append("declarantPhoneNo", this.declarantPhoneNo)
.append("authFormDDesignation", this.authFormDDesignation)
.append("applicationMode", this.applicationMode)
.append("email", this.email)
.append("mobileNo", this.mobileNo)
.append("authFormDApplicant", this.authFormDApplicant)
.append("traderCode", this.traderCode)
.append("companyAddress",this.companyAddress)
.append("declarantIcNo",this.declarantIcNo)
.append("notificationType",this.notificationType)
.append("traderRefNo", this.traderRefNo)
.append("appStatus",this.appStatus)
.append("phoneNo", this.phoneNo)
.append("appCase", this.appCase)
.append("referenceNo",this.referenceNo)
.append("authFormDIcNo",this.authFormDIcNo)
.append("appType", this.appType)
.append("companyName", this.companyName)
.append("branchCode", this.branchCode)
.append("appTransactionType", this.appTransactionType)
.toString();
}
}
On 8/20/07, Matt Raible <[EMAIL PROTECTED]> wrote:
>
> What's the code from your POJO look like?
>
> Matt
>
> On 8/20/07, fadhli <[EMAIL PROTECTED]> wrote:
> > Hello everyone, Matt,
> >
> > I'm using Appfuse 2-05m with Spring MVC Basic.
> >
> > I'm having this problem during consuming my web services. How do I avoid
> > circular references in appfuse 2?
> >
> > I'm getting this error
> >
> > Exception in thread "main" java.lang.StackOverflowError
> > at
> > sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:215)
> > at
> > java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1998)
> > at
> > java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1970)
> > at
> > java.util.Calendar.setTimeInMillis(Calendar.java:1066)
> > at java.util.GregorianCalendar.<init>(GregorianCalendar.java:576)
> > at java.util.Calendar.createCalendar(Calendar.java:968)
> > at java.util.Calendar.getInstance(Calendar.java:924)
> > at
> > org.codehaus.xfire.util.date.XsDateTimeFormat.parseObject(
> XsDateTimeFormat.java:275)
> > at java.text.Format.parseObject(Format.java:219)
> > at
> > org.codehaus.xfire.aegis.type.basic.DateTimeType.readObject(
> DateTimeType.java:39)
> > at
> > org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java
> > :159)
> > at
> > org.codehaus.xfire.aegis.type.basic.BeanType.readObject(BeanType.java
> :159)
> >
> > --
> > /fadhli
>
>
> --
> http://raibledesigns.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
--
/fadhli