Erro ao Persistir dados

4 respostas
R

Colegas, boa noite!

Estou com um problema para persistir as informações no banco de dados.
O sistema devolve o seguinte erro:

“Exception [TOPLINK-4002] (Oracle TopLink Essentials - 2.0.1 (Build b09d-fcs (12/06/2007))): oracle.toplink.essentials.exceptions.DatabaseException
Internal Exception: java.sql.SQLIntegrityConstraintViolationException: A coluna ‘INTATIVIDADE’ não aceita valor nulo.
Error Code: 20000
Call: INSERT INTO ITEMPARTEDIARIAHT (TXTUSUARIO, DTACRIACAO, TMEHINICIO, DTAVALIDADE, DTAULTIMAATUALIZACAO, TMEHFIM, INTTURNO, TXTEQUIPAMENTO, DTADATAPARTEDIARIA) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
bind => [AC40226, 2009-12-10, 13:00:00, 2999-12-31, 2009-12-10, 15:00:00, 1, LOC-0101, 2009-02-28]
Query: InsertObjectQuery(sispetapp.entidade.Itempartediariaht[itempartediariahtPK=sispetapp.entidade.PartediariahtPK[dtadatapartediaria=Sat Feb 28 00:00:00 BRT 2009, txtequipamento=LOC-0101]])”

O problema que vejo é que a coluna ‘INTATIVIDADE’ a qual ele se refere, está preenchida.

O que pode estar errado?
Desde já agradeço o retorno

4 Respostas

AJunior

po pelo q vi não tem essa coluna no insert, TXTUSUARIO, DTACRIACAO, TMEHINICIO, DTAVALIDADE, DTAULTIMAATUALIZACAO, TMEHFIM, INTTURNO, TXTEQUIPAMENTO, DTADATAPARTEDIARIA.

R

Correto. Não Há esta coluna.
Porém, acredito que quem cria esta SQL é o próprio toplink.
Há alguma forma de alterá-la para que possa incluir esta coluna?
Na classe a ser persistida existe a coluna e não entendi pq ela não é inclusa.
Veja abaixo:

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Camadas.Persistencias.Entidades;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Ronaldo Medeiros dos Santos
 */
@Entity
@Table(name = "ITEMPARTEDIARIAHT")
@NamedQueries({})
public class Itempartediariaht implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected PartediariaPK itempartediariahtPK;
    @Column(name = "TMEHINICIO", nullable = false)
    @Temporal(TemporalType.TIME)
    private Date tmehinicio;
    @Column(name = "TMEHFIM", nullable = false)
    @Temporal(TemporalType.TIME)
    private Date tmehfim;
    @Column(name = "DTAULTIMAATUALIZACAO", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date dtaultimaatualizacao;
    @Column(name = "TXTUSUARIO", nullable = false)
    private String txtusuario;
    @Column(name = "DTACRIACAO", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date dtacriacao;
    @Column(name = "DTAVALIDADE", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date dtavalidade;
    @JoinColumn(name = "INTATIVIDADE", nullable = false, referencedColumnName = "INTATIVIDADE", insertable = false, updatable = false)
    @ManyToOne
    private Atividades intatividade;
    @JoinColumns({@JoinColumn(name = "DTADATAPARTEDIARIA", referencedColumnName = "DTADATAPARTEDIARIA", insertable = false, updatable = false),
                  @JoinColumn(name = "TXTEQUIPAMENTO", referencedColumnName = "TXTEQUIPAMENTO", insertable = false, updatable = false)})
    @OneToOne
    private Partediariaht partediariaht;
    @JoinColumn(name = "INTTURNO", nullable = false, referencedColumnName = "INTTURNO")
    @ManyToOne
    private Turnos intturno;

    public Itempartediariaht() {
    }

    public Itempartediariaht(PartediariaPK itempartediariahtPK) {
        this.itempartediariahtPK = itempartediariahtPK;
    }

    public Itempartediariaht(PartediariaPK itempartediariahtPK, Date tmehinicio, Date tmehfim, Date dtaultimaatualizacao, String txtusuario, Date dtacriacao, Date dtavalidade) {
        this.itempartediariahtPK = itempartediariahtPK;
        this.tmehinicio = tmehinicio;
        this.tmehfim = tmehfim;
        this.dtaultimaatualizacao = dtaultimaatualizacao;
        this.txtusuario = txtusuario;
        this.dtacriacao = dtacriacao;
        this.dtavalidade = dtavalidade;
    }

    public Itempartediariaht(Date dtadatapartediaria, String txtequipamento) {
        this.itempartediariahtPK = new PartediariaPK(dtadatapartediaria, txtequipamento);
    }

    public PartediariaPK getItempartediariahtPK() {
        return itempartediariahtPK;
    }

    public void setItempartediariahtPK(PartediariaPK itempartediariahtPK) {
        this.itempartediariahtPK = itempartediariahtPK;
    }

    public Date getTmehinicio() {
        return tmehinicio;
    }

    public void setTmehinicio(Date tmehinicio) {
        this.tmehinicio = tmehinicio;
    }

    public Date getTmehfim() {
        return tmehfim;
    }

    public void setTmehfim(Date tmehfim) {
        this.tmehfim = tmehfim;
    }

    public Date getDtaultimaatualizacao() {
        return dtaultimaatualizacao;
    }

    public void setDtaultimaatualizacao(Date dtaultimaatualizacao) {
        this.dtaultimaatualizacao = dtaultimaatualizacao;
    }

    public String getTxtusuario() {
        return txtusuario;
    }

    public void setTxtusuario(String txtusuario) {
        this.txtusuario = txtusuario;
    }

    public Date getDtacriacao() {
        return dtacriacao;
    }

    public void setDtacriacao(Date dtacriacao) {
        this.dtacriacao = dtacriacao;
    }

    public Date getDtavalidade() {
        return dtavalidade;
    }

    public void setDtavalidade(Date dtavalidade) {
        this.dtavalidade = dtavalidade;
    }

    public Atividades getIntatividade() {
        return intatividade;
    }

    public void setIntatividade(Atividades intatividade) {
        this.intatividade = intatividade;
    }

    public Partediariaht getPartediariaht() {
        return partediariaht;
    }

    public void setPartediariaht(Partediariaht partediariaht) {
        this.partediariaht = partediariaht;
    }

    public Turnos getIntturno() {
        return intturno;
    }

    public void setIntturno(Turnos intturno) {
        this.intturno = intturno;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (itempartediariahtPK != null ? itempartediariahtPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Itempartediariaht)) {
            return false;
        }
        Itempartediariaht other = (Itempartediariaht) object;
        if ((this.itempartediariahtPK == null && other.itempartediariahtPK != null) || (this.itempartediariahtPK != null && !this.itempartediariahtPK.equals(other.itempartediariahtPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "sispetapp.entidade.Itempartediariaht[itempartediariahtPK=" + itempartediariahtPK + "]";
    }

}
Y

o que esta acontecendo é que quando voce esta inserindo os itens a tabela principal ainda nao foi inserida. E nao conheco o top link, veja se tem alguma configuracao que voce possa fazer, pra que insira na ordem certa.

Ronaldo_Gibi1

Colegas boa noite!

Descobri o problema:

private Date dtavalidade;
@JoinColumn(name = “INTATIVIDADE”, nullable = false, referencedColumnName = “INTATIVIDADE”, [color=red]insertable = false, updatable = false[/color])

Notem que na declaração acima eu havia definido como falso para inserção do atributo no banco de dados.
Por isto é que ele não aparecia na query criada pelo TopLink.
Mesmo assim gostaria de agradecer a atenção de todos.

Criado 10 de dezembro de 2009
Ultima resposta 21 de dez. de 2009
Respostas 4
Participantes 4