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; } }