Добавление нескольких детей к родителю в спящем режиме для приложения Java Swing - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь добавить нескольких детей к родителю.В моем примере я добавляю пользователей в класс (класс в школе).Что бы я ни пытался, я всегда добавляю в свою коллекцию только одну, а не обе.

Я использую Hibernate в приложении Swing с SqLite.Я пробовал разные решения, но не могу заставить его работать.Я включил 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;
}

Пользователь.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;
}
}

Класс.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.Ява

 @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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...