I'm trying to get a Map relation to work with a referenced Key....i.e the Key is another entity bean:
| @Entity | @Table (name="ship") | @NamedQuery(name="ship.getAll", query="from Ship sh") | public class Ship { | | ..... | | @CollectionOfElements (fetch = FetchType.EAGER) | @MapKey(name="nameid") | public Map<AttributeName,Attribute> getAttributes() { | if((attributes) == null) attributes = new HashMap<AttributeName,Attribute>(); | return attributes; | } | | public void setAttributes(Map<AttributeName,Attribute> attributes) { | this.attributes = attributes; | } | | private int id; | private Map<AttributeName,Attribute> attributes; | | } | | | public class Attribute { | | @Id @GeneratedValue(strategy= GenerationType.AUTO) | public int getId() { | return id; | } | | public void setId(int id) { | this.id = id; | } | | @ManyToOne (cascade = {CascadeType.ALL}) | 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 (cascade = {CascadeType.PERSIST}) | 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; | } | | @CollectionOfElements | public Collection<Attribute> getAttr() { | if((attr) == null) attr = new ArrayList<Attribute>(); | return attr; | } | | public void setAttr(Collection<Attribute> attr) { | this.attr = attr; | } | | private Collection<Attribute> attr; | private int id; | private String name; | | } | and I get the following exception on deploy: | Caused by: org.hibernate.MappingException: Could not determine type for: com.sms.srs.entity.AttributeName, for columns: [org.hibernate.mapping.Formula( nameid_id )] | at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:266) | at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253) | at org.hibernate.mapping.IndexedCollection.validate(IndexedCollection.java:68) | at org.hibernate.cfg.Configuration.validate(Configuration.java:988) | at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1169) | at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:414) | at org.hibernate.ejb.Ejb3Configuration.createEntityManagerFactory(Ejb3Configuration.java:575) | at org.hibernate.ejb.Ejb3Configuration.createContainerEntityManagerFactory(Ejb3Configuration.java:245) | at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:108) | at org.jboss.ejb3.entity.PersistenceUnitDeployment.start(PersistenceUnitDeployment.java:260) | To clarify, a ship should have a map of attributename -> attribute The attributename class has to be used rather than a string so that key uniqueness is maintained (I tested it with String and it worked fine....it seems to be something to do with AttributeName). I don't see where I'm missing notion, help appreciated!! Thanks. View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3926866#3926866 Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3926866 ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ JBoss-user mailing list JBoss-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jboss-user