问题
![](https://www.eimg.top/images/2020/03/21/8414ac038ed7a1de82677c7b340df7bf.png)
I have the above tables i need to write the HIbernate entity class with annotation and mapping
i have a problem while getting the List of ObjectAttributes..
Class are written as below
@Entity
public class Object {
@Id
private int id;
private String name;
@OneToMany(mappedBy="object",fetch=FetchType.LAZY)
private List<ObjectAttribute> attrubuteList;
}
@Entity
public class ObjectAttribute {
@Id
private int id;
@ManyToOne
@JoinColumn(name="objectId")
private Object object;
private String name;
}
@Entity
public class Filter {
@Id
private int filterId;
@ManyToOne
@JoinColumn(name="ObjectId")
private Object object;
private String filterName;
@OneToMany(mappedBy="filter")
private Set<FilterAttribute> filterValues;
}
@Entity
public class FilterAttribute implements Serializable {
@Id
private int filterAttrId;
@Id
@ManyToOne
@JoinColumn(name="objectId")
private Object object;
@Id
@ManyToOne
@JoinColumn(name="filterId")
private Filter filter;
@Id
@ManyToOne
@JoinColumn(name="attributeId")
private ObjectAttribute attribute;
private String value;
}
Note not added getter and setters
and test code as below
List<Object> list = sess.createCriteria(Object.class).list();
for(Object ob: list)
{
System.out.println("Object name : "+ ob.getName());
List<ObjectAttribute> attList = ob.getAttrubuteList();
for (Iterator iterator = attList.iterator(); iterator.hasNext();) {
ObjectAttribute objectAttribute = (ObjectAttribute) iterator
.next();
System.out.println(objectAttribute.getName());
}
}
attList = ob.getAttrubuteList(); returns null
回答1:
While creating the Object in my test code as below
Object obj = new Object();
obj.setId(1);
obj.setName("Employee");
sess.save(obj);
ObjectAttribute ageAtt = new ObjectAttribute();
ageAtt.setId(1);
ageAtt.setName("age");
ageAtt.setObject(obj);
sess.save(ageAtt);
ObjectAttribute depAtt = new ObjectAttribute();
depAtt.setId(2);
depAtt.setName("department");
depAtt.setObject(obj);
sess.save(depAtt);
ObjectAttribute attName = new ObjectAttribute();
attName.setId(3);
attName.setName("name");
attName.setObject(obj);
sess.save(attName);
I have not added these line
obj.getAttrubuteList().add(depAtt);
obj.getAttrubuteList().add(attName);
obj.getAttrubuteList().add(ageAtt);
But i dont know why we need to do this!!
来源:https://stackoverflow.com/questions/24044130/mapping-issue-on-hibernate-annotation