AnnotationException: no persistent id property
umk Feb 24, 2007 9:28 PMHi,
I've created two entity classes and a composite primary key class. I think I have all three coded properly but when I deploy with Seam 1.1.6 I get an exception:
AnnotationException: com.abc.selfEnrollment.RecordDataKey has no persistent id property
I'm sure I doing something silly. Please tell me what. Here are relevant sections from each class:
@Entity
@Name("record")
@Scope(SESSION)
@Table(name = "record")
public class Record implements Serializable {
private Long recordId;
private Long agreementProductId;
private Date createDate;
private Date modifiedDate;
private Date eventDate;
private Long participantId;
private Long recordStatusCode;
private Long appUserId;
private Collection<RecordData> recordData;
public Record() {
}
@Id
@GeneratedValue
public Long getRecordId() {
return recordId;
}
public void setRecordId(Long recordId) {
this.recordId = recordId;
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "record")
public Collection<RecordData> getRecordData() {
return recordData;
}
public void setRecordData(Collection<RecordData> recordDatas) {
this.recordData = recordDatas;
}
...
}
@IdClass(com.abc.selfEnrollment.RecordDataKey.class)
@Entity
@Name("recordData")
@Scope(SESSION)
@Table(name = "record_data")
public class RecordData implements Serializable {
private Long recordId;
private Long biomarkerId;
private Record record;
private Double value;
private Long uomId;
public RecordData() {
}
@Id
public Long getBiomarkerId() {
return biomarkerId;
}
public void setBiomarkerId(Long biomarkerId) {
this.biomarkerId = biomarkerId;
}
@Id
@Column(name = "ORDERID", nullable = false, insertable = false, updatable = false)
public Long getRecordId() {
return recordId;
}
public void setRecordId(Long recordId) {
this.recordId = recordId;
}
@ManyToOne
@JoinColumn(name = "RECORD_ID")
public Record getRecord() {
return record;
}
public void setRecord(Record record) {
this.record = record;
}
...
}
public final class RecordDataKey implements Serializable {
public Long recordId;
public Long biomarkerId;
public RecordDataKey() {
}
public RecordDataKey(Long orderId, Long itemId) {
this.recordId = orderId;
this.biomarkerId = itemId;
}
public boolean equals(Object otherOb) {
if (this == otherOb) {
return true;
}
if (!(otherOb instanceof RecordDataKey)) {
return false;
}
RecordDataKey other = (RecordDataKey) otherOb;
return ((recordId == null ? other.recordId == null : recordId
.equals(other.recordId)) && (biomarkerId == other.biomarkerId));
}
public int hashCode() {
return ((recordId == null ? 0 : recordId.hashCode()) ^ ((int) biomarkerId
.longValue() >>> 32));
}
public String toString() {
return "" + recordId + "-" + biomarkerId;
}
}