1 Reply Latest reply on Feb 27, 2007 7:42 AM by umk

    AnnotationException: no persistent id property

    umk

      Hi,

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