问题
 
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