> Hi Matt,
>
> presently i'm working with appfuse 2.0 (struts2) application. i have one
> problem how to use composite primary key using hibernate in this
> application
I would suggest using the @EmeddedId
e.g.
-- PeriodRegion.java
package com.app.model;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
/**
*
* @author alistair
*/
@Entity
@Table(name = "period_region", catalog = "myproject", schema = "")
@NamedQueries({...@namedquery(name = "PeriodRegion.findAll", query = "SELECT p
FROM PeriodRegion p"), @NamedQuery(name = "PeriodRegion.findByPersonid", query
= "SELECT p FROM PeriodRegion p WHERE p.periodRegionPK.personid = :personid"),
@NamedQuery(name = "PeriodRegion.findByRegionid", query = "SELECT p FROM
PeriodRegion p WHERE p.periodRegionPK.regionid = :regionid"), @NamedQuery(name
= "PeriodRegion.findByPaid", query = "SELECT p FROM PeriodRegion p WHERE p.paid
= :paid")})
public class PeriodRegion implements Serializable {
private static final long serialVersionUID = 1L;
@EmbeddedId
protected PeriodRegionPK periodRegionPK;
@Basic(optional = false)
@Column(name = "paid", nullable = false)
private boolean paid;
public PeriodRegion() {
}
public PeriodRegion(PeriodRegionPK periodRegionPK) {
this.periodRegionPK = periodRegionPK;
}
public PeriodRegion(PeriodRegionPK periodRegionPK, boolean paid) {
this.periodRegionPK = periodRegionPK;
this.paid = paid;
}
public PeriodRegion(long personid, long regionid) {
this.periodRegionPK = new PeriodRegionPK(personid, regionid);
}
public PeriodRegionPK getPeriodRegionPK() {
return periodRegionPK;
}
public void setPeriodRegionPK(PeriodRegionPK periodRegionPK) {
this.periodRegionPK = periodRegionPK;
}
public boolean getPaid() {
return paid;
}
public void setPaid(boolean paid) {
this.paid = paid;
}
@Override
public int hashCode() {
int hash = 0;
hash += (periodRegionPK != null ? periodRegionPK.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
not set
if (!(object instanceof PeriodRegion)) {
return false;
}
PeriodRegion other = (PeriodRegion) object;
if ((this.periodRegionPK == null && other.periodRegionPK != null) ||
(this.periodRegionPK != null &&
!this.periodRegionPK.equals(other.periodRegionPK))) {
return false;
}
return true;
}
@Override
public String toString() {
return "PeriodRegion[periodRegionPK=" + periodRegionPK + "]";
}
}
-- PeriodRegionPK.java
package com.app.model;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Embeddable;
/**
*
* @author alistair
*/
@Embeddable
public class PeriodRegionPK implements Serializable {
@Basic(optional = false)
@Column(name = "personid", nullable = false)
private long personid;
@Basic(optional = false)
@Column(name = "regionid", nullable = false)
private long regionid;
public PeriodRegionPK() {
}
public PeriodRegionPK(long personid, long regionid) {
this.personid = personid;
this.regionid = regionid;
}
public long getPersonid() {
return personid;
}
public void setPersonid(long personid) {
this.personid = personid;
}
public long getRegionid() {
return regionid;
}
public void setRegionid(long regionid) {
this.regionid = regionid;
}
@Override
public int hashCode() {
int hash = 0;
hash += (int) personid;
hash += (int) regionid;
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are
not set
if (!(object instanceof PeriodRegionPK)) {
return false;
}
PeriodRegionPK other = (PeriodRegionPK) object;
if (this.personid != other.personid) {
return false;
}
if (this.regionid != other.regionid) {
return false;
}
return true;
}
@Override
public String toString() {
return "com.counties.app.model.PeriodRegionPK[personid=" + personid +
", regionid=" + regionid + "]";
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]