Hibernate添加了额外的sql语句

时间:2016-11-18 00:20:04

标签: java json rest

我正在开发一个宁静的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 + "]";
    }
}

非常感谢你的帮助

0 个答案:

没有答案