[jboss-user] [EJB 3.0] - Mystery solved!
monkeyden
do-not-reply at jboss.com
Wed Nov 8 15:27:51 EST 2006
Mystery solved!
The @Column annotations for the primary key fields don't go on the entity bean at all. They go on the methods in the @IdClass only, though it doesn't break if they are in both places.
I now know that Bill refrained from the @Column annotations for clarity of the example, but beware of this in the book. Code below. Hope this helps someone.
Entity
package com.company.project.entity;
|
| import java.util.Date;
|
| import javax.persistence.Column;
| import javax.persistence.Entity;
| import javax.persistence.Id;
| import javax.persistence.IdClass;
| import javax.persistence.Table;
|
| import org.jboss.seam.annotations.Name;
| @Entity
| @Name("streetWatchEntity")
| @Table(name = "DWL_STREET_WATCH_LIST")
| @IdClass(StreetWatchPK.class)
| public class StreetWatchEntity implements java.io.Serializable {
| private static final long serialVersionUID = 4855048029589330487L;
|
| /**
| * PRIMARY KEY FIELD
| * Retrieves the UserKey from the entity
| */
| @Id
| public Long getUserKey() {
| return this.userKey;
| }
|
| /**
| * Sets the UserKey of the entity
| */
| public void setUserKey(Long userKey) {
| this.userKey = userKey;
| }
|
| /**
| * PRIMARY KEY FIELD
| * Retrieves the LocationId from the entity
| */
| @Id
| public Long getLocationId() {
| return this.locationId;
| }
|
| /**
| * Sets the LocationId of the entity
| */
| public void setLocationId(Long locationId) {
| this.locationId = locationId;
| }
|
| /**
| * PRIMARY KEY FIELD
| * Retrieves the AreaId from the entity
| */
| @Id
| public Integer getAreaId() {
| return this.areaId;
| }
|
| /**
| * Sets the AreaId of the entity
| */
| public void setAreaId(Integer areaId) {
| this.areaId = areaId;
| }
|
| /**
| * PRIMARY KEY FIELD
| * Retrieves the AddressStandardized from the entity
| */
| @Id
| public String getAddressStandardized() {
| return this.addressStandardized;
| }
|
| /**
| * Sets the AddressStandardized of the entity
| */
| public void setAddressStandardized(String addressStandardized) {
| this.addressStandardized = addressStandardized;
| }
|
| /**
| * Retrieves the Address from the entity
| */
| @Column(name = "ADDRESS", length = 128, nullable = true)
| public String getAddress() {
| return this.address;
| }
|
| /**
| * Sets the Address of the entity
| */
| public void setAddress(String address) {
| this.address = address;
| }
|
| /**
| * Retrieves the LastUpdate from the entity
| */
| @Column(name = "LAST_UPDATE", length = 7, nullable = true)
| public Date getLastUpdateDate() {
| return this.lastUpdateDate;
| }
|
| /**
| * Sets the LastUpdate of the entity
| */
| public void setLastUpdateDate(Date lastUpdate) {
| this.lastUpdateDate = lastUpdate;
| }
|
| /**
| * Retrieves the SeqNumber from the entity
| */
| @Column(name = "SEQ_NUMBER", length = 22, nullable = false)
| public Long getSeqNumber() {
| return this.seqNumber;
| }
|
| /**
| * Sets the SeqNumber of the entity
| */
| public void setSeqNumber(Long seqNumber) {
| this.seqNumber = seqNumber;
| }
| private String address = null;
| private String addressStandardized = null;
| private Integer areaId = null;
| private Date lastUpdateDate = null;
| private Long locationId = null;
| private Long seqNumber = null;
| private Long userKey = null;
| }
IdClass
package com.company.project.entity;
|
| import java.io.Serializable;
|
| import javax.persistence.Column;
|
| public class StreetWatchPK implements Serializable{
| private static final long serialVersionUID = 3355389391459690610L;
|
| private String addressStandardized = null;
|
| private Integer areaId = null;
|
| private Long locationId = null;
|
| private Long userKey = null;
|
| /**
| * No-arg constructor
| */
| public StreetWatchPK() {}
|
| public StreetWatchPK(Long userKey, Long locationId, String addressStandardized, Integer areaId) {
| this.userKey = userKey;
| this.locationId = locationId;
| this.addressStandardized = addressStandardized;
| this.areaId = areaId;
| }
|
| @Override
| public boolean equals(Object obj) {
| if (obj == this)
| return true;
| if (!(obj instanceof StreetWatchPK))
| return false;
| StreetWatchPK pk = (StreetWatchPK) obj;
|
| //User Key
| if(locationId.longValue() != pk.getLocationId().longValue()){
| return false;
| }
| //Location Id
| if(userKey.longValue() != pk.getUserKey().longValue()){
| return false;
| }
| //Area Id
| if(areaId.intValue() != pk.getAreaId().intValue()){
| return false;
| }
| if (!addressStandardized.equals(pk.getAddressStandardized())){
| return false;
| }
| return true;
| }
|
| @Override
| public int hashCode() {
| return addressStandardized.hashCode() +
| (int)areaId.intValue() +
| (int)locationId.longValue() +
| (int)userKey.longValue();
| }
|
| /**
| * @return the addressStandardized
| */
| @Column(name = "ADDRESS_STANDARDIZED", length = 128, nullable = false)
| public String getAddressStandardized() {
| return addressStandardized;
| }
|
| /**
| * @param addressStandardized the addressStandardized to set
| */
| public void setAddressStandardized(String addressStandardized) {
| this.addressStandardized = addressStandardized;
| }
|
| /**
| * @return the areaId
| */
| @Column(name = "AREA_ID", length = 22, nullable = false)
| public Integer getAreaId() {
| return areaId;
| }
|
| /**
| * @param areaId the areaId to set
| */
| public void setAreaId(Integer areaId) {
| this.areaId = areaId;
| }
|
| /**
| * @return the locationId
| */
| @Column(name = "LOCATION_ID", length = 22, nullable = false)
| public Long getLocationId() {
| return locationId;
| }
|
| /**
| * @param locationId the locationId to set
| */
| public void setLocationId(Long locationId) {
| this.locationId = locationId;
| }
|
| /**
| * @return the userKey
| */
| @Column(name = "USER_KEY", length = 22, nullable = false)
| public Long getUserKey() {
| return userKey;
| }
|
| /**
| * @param userKey the userKey to set
| */
| public void setUserKey(Long userKey) {
| this.userKey = userKey;
| }
|
| }
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3984303#3984303
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3984303
More information about the jboss-user
mailing list