休眠:持久化对象

时间:2009-11-08 02:35:48

标签: java hibernate

我正在尝试通过Hibernate创建新的Event对象以保存在数据库中。下面的代码成功创建了一个事件,但是当调用session.save(evt)时,我得到的返回值为0(我认为它相当于null)。任何人都可以确定下面的问题是什么?如果您需要有关所涉及的类或hibernate映射文件的更多信息,请提供您所需的信息。

注意:假设数据库中存在事件表。

public class ScheduleUnitOfWork {
private Map<Service, Employee> assignments;
private Date startDate;
private Date endDate;
private String customerName;

public ScheduleUnitOfWork(Map<Service, Employee> assignments, Date startDate,
                          Date endDate, String customerName) {
    super();

    this.assignments = assignments;
    this.startDate = startDate;
    this.endDate = endDate;
    this.customerName = customerName;
}

public boolean scheduleEmployees(){
    Session session = SessionFactoryUtil.getInstance().getCurrentSession();
    Transaction tx = null;
    boolean retVal = true;

    try {
        tx = session.beginTransaction();

        for(Service s : assignments.keySet()){
            Employee e = assignments.get(s);

            Event evt = new Event();
            evt.setAssignedService(s);
            evt.setCustomerName(this.customerName);
            evt.setEndDate(endDate);
            evt.setStartDate(startDate);

            System.out.println(session.save(evt));
        }

        tx.commit();

    }catch(RuntimeException ex){
        ex.printStackTrace();

        if(tx != null){
            tx.rollback();
        }
        session.close();

        retVal = false;
    }

    return retVal;
}

}

<class name="Event" table="Events">
    <id name="ID" column="ID" type="int">
        <generator class="assigned"/>
    </id>
    <property name="startDate" column="startDate" type="timestamp"/>
    <property name="endDate" column="endDate" type="timestamp"/>
    <property name="customerName" column="customerName" type="string"/>
    <many-to-one name="assignedService" column="serviceID" 
                class="org.hibernate.service.Service"
                unique="true" not-null="true"/>

</class>

1 个答案:

答案 0 :(得分:2)

您的生成器类被“分配”意味着Hibernate将“按原样”获取ID - 例如假设正在设置它。

看一下Hibernate支持的various generator classes。如果您希望自动生成您的ID,最常见的方法是“身份”(如果您的数据库支持它)或“序列”。