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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jboss-user