Collection not yet supported
aidan_b5 Feb 17, 2006 4:43 AMI'm trying to get three simple beans to map to each other and am getting the following exception (v4.03SP1 EJB RFC 5):
(InvocationTargetException).....
Caused by: org.hibernate.AnnotationException: com.sms.srs.entity.Attribute collection not yet supported: com.sms.srs.entity.AttributeNameattr
at org.hibernate.cfg.annotations.CollectionBinder.getCollectionBinder(CollectionBinder.java:197)
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1175)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:629)
at org.hibernate.cfg.AnnotationConfiguration.processArtifactsOfType(AnnotationConfiguration.java:276)
The classes involved are:
@Entity @Table (name="ship") public class Ship { public int getImo() { return imo; } public void setImo(int imo) { this.imo = imo; } @Id @GeneratedValue(strategy= GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } @CollectionOfElements public Collection<Attribute> getAttributes() { return attributes; } public void setAttributes(Collection<Attribute> attributes) { this.attributes = attributes; } private int imo; private int id; private Collection<Attribute> attributes; }
@Entity @Embeddable @Table (name="attribute") public class Attribute { @Id @GeneratedValue(strategy= GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } @ManyToOne @JoinColumn(name = "id") public AttributeName getNameid() { return nameid; } public void setNameid(AttributeName nameid) { this.nameid = nameid; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } @ManyToOne @JoinColumn(name = "id") public Ship getShip() { return ship; } public void setShip(Ship ship) { this.ship = ship; } public long getStartdate() { return startdate; } public void setStartdate(long startdate) { this.startdate = startdate; } public long getEnddate() { return enddate; } public void setEnddate(long enddate) { this.enddate = enddate; } private Ship ship; private int id; private AttributeName nameid; private String value; private long startdate; private long enddate; }
@Entity @Table (name="attributename") public class AttributeName { @Id @GeneratedValue(strategy= GenerationType.AUTO) public int getId() { return id; } public void setId(int id) { this.id = id; } //Name of the attribute public String getName() { return name; } public void setName(String name) { this.name = name; } @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy="order") public Attribute getAttr() { return attr; } public void setAttr(Attribute attr) { this.attr = attr; } private Attribute attr; private int id; private String name; }
With my persistence.xml:
<persistence> <persistence-unit name="srsentity"> <jta-data-source>java:/MySqlDS</jta-data-source> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <property name="hibernate.hbm2ddl.auto" value="update"/> </properties> </persistence-unit> </persistence>
According to the hibernate annotation documentation, if I use a collection of elements, I should use @CollectionOfElements instead of @OneToMany.... because the EJB spec does not support them...which I'm doing (a Ship has a collection of Attribute)
I'd really appreciate some help here.
Thanks.