我正在尝试向父母添加多个孩子。在我的例子中,我将用户添加到班级(学校班级)。无论我尝试什么,我总是最终只在我的收藏中添加一个,而不是两者。
我在使用SqLite的Swing应用程序中使用Hibernate。我尝试了不同的解决方案,但我无法使其发挥作用。我包括POJOS,映射和测试代码。拯救和加载用户/类工作,将一个用户添加到类中也是成功的。
User.java
public class User {
private int userid;
private String firstname;
private String lastname;
private Date birthdate;
private String street;
private int housenumber;
private String city;
private String zipcode;
private Set tests;
private Class classgroup;
public User() {
}
public int getUserid() {
return userid;
}
public void setUserid(int userid) {
this.userid = userid;
}
*getters en setter for all others*
public Class getClassgroup() {
return classgroup;
}
public void setClassgroup(Class classgroup) {
this.classgroup = classgroup;
}
的 User.hbm.xml 的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false">
<class name="be.sdgsu.model.pojo.User" table="user">
<id name="userid">
<generator class="identity"/>
</id>
<property name="firstname" not-null="true"/>
<property name="lastname" not-null="true"/>
<property name="birthdate"/>
<property name="street"/>
<property name="housenumber"/>
<property name="city"/>
<property name="zipcode"/>
<set name="tests" inverse="false">
<key column="userid"/>
<one-to-many class="be.sdgsu.model.pojo.Poptest"/>
</set>
<many-to-one name="classgroup" column="classid"/>
</class>
</hibernate-mapping>
的 Class.java 的
public class Class {
private int classid;
private String name;
private Education education;
private Set<User> users = new HashSet<>();
public Class() {
}
public int getClassid() {
return classid;
}
public void setClassid(int classid) {
this.classid = classid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Education getEducation() {
return education;
}
public void setEducation(Education education) {
this.education = education;
}
public Set<User> getUsers() {
return users;
}
public void setUsers(Set<User> users) {
this.users = users;
}
}
的 Class.hbm.xml 的
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping default-lazy="false">
<class name="be.sdgsu.model.pojo.Class" table="class">
<id name="classid">
<generator class="identity"/>
</id>
<property name="name" type="java.lang.String" not-null="true"/>
<many-to-one name="education" column="educationid"/>
<set name="users" inverse="false">
<key column="classid"/>
<one-to-many class="be.sdgsu.model.pojo.User"/>
</set>
</class>
</hibernate-mapping>
的 UserDao.java 的
public class ClassDao {
public Class saveClass(Class class1) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
session.saveOrUpdate(class1);
session.getTransaction().commit();
return class1;
}
public Class getClass(int classid) {
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query = session.createQuery("FROM Class WHERE id=:ident").setParameter("ident", classid);
Class class1 = (Class) query.uniqueResult();
session.getTransaction().commit();
return class1;
}
}
的 ClassDaoTest.java 的
@Test
public void getUsersInClass() {
class1 = classDao.saveClass(class1);
User user1 = userDao.saveUser(TestData.getUser());
User user2 = userDao.saveUser(TestData.getUser());
class1.getUsers().add(user1);
class1.getUsers().add(user2);
classDao.saveClass(class1);
assertTrue("There were no two users retrieved", classDao.getClass(class1.getClassid()).getUsers().size() > 1);
}