这是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)方法不执行,既不报错也不抛异常,请求各位帮忙看看。