hibernate一对多添加dao层中的save()方法不执行

这是dao层中的方法

 // 增加设备
    @Override
    public void addDevice(Device device) {

        try {
            String hql = "from User u where u.userName=?";
            Query query = sessionFactory.getCurrentSession().createQuery(hql);
            query.setString(0, device.getOwnerName());
            User u = (User) query.uniqueResult();
            Device device1 = new Device();
            device1.setDeviceId(device.getDeviceId());
            device1.setDeviceName(device.getDeviceName());
            device1.setOwnerName(device.getOwnerName());
            device1.setDeviceOwner(u.getRealName());
            device1.setUser(u);
            sessionFactory.getCurrentSession().save(device1);
        } catch (Exception e) {
            System.out.println(e);
        }
    }

这是设备实体类

package com.plb.entities;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="T_DEVICE")
public class Device implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(length = 32)
    private String deviceId;//设备Id

    @Column(length = 32)
    private String deviceName;//设备名称

    @Column(length=32)
    private String deviceOwner;//设备所有者

    @Column(length = 32)
    private String ownerName;//设备所有着账号

    //Device对象的ownerName和User对象的userName字段相关联,

     @ManyToOne(cascade = CascadeType.ALL, optional = false)
     @JoinColumn(name="ownerName", referencedColumnName="userName",insertable=false,updatable=false)
     private User user;

    public String getDeviceId() {
        return deviceId;
    }
    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }

    public String getOwnerName() {
        return ownerName;
    }
    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }
    public String getDeviceOwner() {
        return deviceOwner;
    }
    public void setDeviceOwner(String deviceOwner) {
        this.deviceOwner = deviceOwner;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }


}

这是用户实体类

 package com.plb.entities;

import java.io.Serializable;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name="T_DEVICE")
public class Device implements Serializable{

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    @Column(length = 32)
    private String deviceId;//设备Id

    @Column(length = 32)
    private String deviceName;//设备名称

    @Column(length=32)
    private String deviceOwner;//设备所有者

    @Column(length = 32)
    private String ownerName;//设备所有着账号

    //Device对象的ownerName和User对象的userName字段相关联,

     @ManyToOne(cascade = CascadeType.ALL, optional = false)
     @JoinColumn(name="ownerName", referencedColumnName="userName",insertable=false,updatable=false)
     private User user;

    public String getDeviceId() {
        return deviceId;
    }
    public void setDeviceId(String deviceId) {
        this.deviceId = deviceId;
    }
    public String getDeviceName() {
        return deviceName;
    }
    public void setDeviceName(String deviceName) {
        this.deviceName = deviceName;
    }

    public String getOwnerName() {
        return ownerName;
    }
    public void setOwnerName(String ownerName) {
        this.ownerName = ownerName;
    }
    public String getDeviceOwner() {
        return deviceOwner;
    }
    public void setDeviceOwner(String deviceOwner) {
        this.deviceOwner = deviceOwner;
    }
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }


}

一个用户对应多个设备,前台传给后台一个设备id(deviceID)、设备名字(deviceName)用户账号(ownerName)和设备所有者(deviceOwner),之后根据用户账号ownerName从从用户表中查询出一个User对象user,之后再把设备Id,设备名称,用户(user)传递到新建的设备对象device1中,Debug后台所有的数据都能获得值,就是sessionFactory.getCurrentSession().save(device1)方法不执行,既不报错也不抛异常,请求各位帮忙看看。

你看下这个,http://blog.csdn.net/jeep_ouc/article/details/41323765

图片说明

看下配置有没有自动去提交事务。