我正在开发一个宁静的ws,它的一个方法是在数据库中插入一些数据。信息通过Json传递,起初我认为可能json
不正确,在我调试应用程序时购买,服务器端正在构建对象,然后我传递给hibernate saveOrUpdate()。这就是:
Hibernate: update CargasEnc set Fecha=?, HojaRutaID=?, CargaTipoID=? where CargaEncID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set Averiado=?, Cambio=?, Entrega=?, EnvaseID=?, Lleno=?, Retiro=?, Vacio=? where CargaDetID=?
Hibernate: update CargasDet set CargaEncID=null where CargaEncID=?
最后一行很奇怪,为什么把cargaEncId置为null,当我用log4j检查时,cargaEncId的值为1654.
我尝试的另一件事是在服务器上使用测试客户端。我从数据库中获取了相同的对象,更改了一些项目,saveOrUpdate()
并且它工作正常,并且除了最后一个之外,hibernate执行了与之前相同的所有sql语句。
这是我的两个班级:
package com.designfreed.entities;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
@Entity
@Table(name = "CargasEnc")
public class Carga {
@Id
@GeneratedValue
@Column(name = "CargaEncID")
private Long id;
@Column(name = "Fecha")
private Date fecha;
@ManyToOne
@JoinColumn(name = "CargaTipoID")
private CargaTipo tipo;
@Column(name = "HojaRutaID")
private Long hojaRutaId;
@OneToMany(cascade = {CascadeType.ALL}, fetch = FetchType.EAGER)
@JoinColumn(name = "CargaEncID")
private List<ItemCarga> items;
public Carga() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Date getFecha() {
return fecha;
}
public void setFecha(Date fecha) {
this.fecha = fecha;
}
public CargaTipo getTipo() {
return tipo;
}
public void setTipo(CargaTipo tipo) {
this.tipo = tipo;
}
public Long getHojaRutaId() {
return hojaRutaId;
}
public void setHojaRutaId(Long hojaRutaId) {
this.hojaRutaId = hojaRutaId;
}
public List<ItemCarga> getItems() {
return items;
}
public void setItems(List<ItemCarga> items) {
this.items = items;
}
@Override
public String toString() {
return "Carga [id=" + id + ", fecha=" + fecha + ", tipo=" + tipo + ", hojaRutaId=" + hojaRutaId + ", items="
+ items + "]";
}
}
package com.designfreed.entities;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "CargasDet")
public class ItemCarga {
@Id
@GeneratedValue
@Column(name = "CargaDetID")
private Long id;
@Column(name = "EnvaseID")
private Integer envaseId;
@Column(name = "Lleno")
private Integer lleno;
@Column(name = "Vacio")
private Integer vacio;
@Column(name = "Averiado")
private Integer averiado;
@Column(name = "Retiro")
private Integer retiro;
@Column(name = "Entrega")
private Integer entrega;
@Column(name = "Cambio")
private Integer cambio;
public ItemCarga() {
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Integer getEnvaseId() {
return envaseId;
}
public void setEnvaseId(Integer envaseId) {
this.envaseId = envaseId;
}
public Integer getLleno() {
return lleno;
}
public void setLleno(Integer lleno) {
this.lleno = lleno;
}
public Integer getVacio() {
return vacio;
}
public void setVacio(Integer vacio) {
this.vacio = vacio;
}
public Integer getAveriado() {
return averiado;
}
public void setAveriado(Integer averiado) {
this.averiado = averiado;
}
public Integer getRetiro() {
return retiro;
}
public void setRetiro(Integer retiro) {
this.retiro = retiro;
}
public Integer getEntrega() {
return entrega;
}
public void setEntrega(Integer entrega) {
this.entrega = entrega;
}
public Integer getCambio() {
return cambio;
}
public void setCambio(Integer cambio) {
this.cambio = cambio;
}
@Override
public String toString() {
return "ItemCarga [id=" + id + ", envaseId=" + envaseId + ", lleno=" + lleno + ", vacio=" + vacio
+ ", averiado=" + averiado + ", retiro=" + retiro + ", entrega=" + entrega + ", cambio=" + cambio + "]";
}
}
非常感谢你的帮助