Ajuda em many-to-many com mais atributos

0 respostas
P

Galera seguinte to com um problema em um many to many com mais atributos

Segue a classe UsuarioHasSetorPK:

package com.dto;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;


public class UsuarioSetorPK implements Serializable {

    //private static final long serialVersionUID = -5869094934725857817l;
        
    @Id
    @Column(name="codigo_usuario", insertable=false, updatable=false)
    private long id_usuario;
    
    @Id
    @Column(name="codigo_setor", insertable=false, updatable=false)
    private long id_setor;
    
    public UsuarioSetorPK(){
        super();
    }
    
    @Override
    public boolean equals(Object o) {
        return super.equals(o);
    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }

    public Long getId_usuario() {
        return id_usuario;
    }

    public void setId_usuario(long id_usuario) {
        this.id_usuario = id_usuario;
    }

    public Long getId_setor() {
        return id_setor;
    }

    public void setId_setor(long id_setor) {
        this.id_setor = id_setor;
    }

}

A classe UsuarioSetorDTO

package com.dto;

import javax.persistence.*;

@Entity
@Table(name="usuario_setor")
@IdClass(UsuarioSetorPK.class)
public class UsuarioSetorDTO {
        
    @Id
    @Column(name="codigo_usuario", insertable=false, updatable=false)
    private long id_usuario;
    
    @Id
    @Column(name="codigo_setor", insertable=false, updatable=false)
    private long id_setor;
    
    @ManyToOne(cascade= CascadeType.ALL)
    @JoinColumn(name="codigo_usuario")
    private UsuarioDTO usuarioDTO;
    
    @ManyToOne(cascade= CascadeType.ALL)
    @JoinColumn(name="codigo_setor")
    private SetorDTO setorDTO;
    
    @Column(name = "permissao")
    private int permissao;

    public UsuarioSetorDTO() {
        super();
        this.id_setor = 0l;
        this.id_usuario = 0l;
    }

    public UsuarioSetorDTO(long codigo_usuario, long codigo_setor) {
        super();
    }
    


    public UsuarioDTO getUsuarioDTO() {
        return usuarioDTO;
    }

    public void setUsuarioDTO(UsuarioDTO usuarioDTO) {
        this.usuarioDTO = usuarioDTO;
    }

    public SetorDTO getSetorDTO() {
        return setorDTO;
    }

    public void setSetorDTO(SetorDTO setorDTO) {
        this.setorDTO = setorDTO;
    }

    public int getPermissao() {
        return permissao;
    }

    public void setPermissao(int permissao) {
        this.permissao = permissao;
    }

    public Long getId_usuario() {
        return id_usuario;
    }

    public void setId_usuario(long id_usuario) {
        this.id_usuario = id_usuario;
    }

    public Long getId_setor() {
        return id_setor;
    }

    public void setId_setor(long id_setor) {
        this.id_setor = id_setor;
    }

    
}

O teste:

UsuarioBO usuarioBO = new UsuarioBO();
        SetorBO setorBO = new SetorBO();
        UsuarioSetorBO usuarioSetorBO = new UsuarioSetorBO();
        UsuarioSetorDTO usuarioSetorDTO = new UsuarioSetorDTO();
        UsuarioDTO usuarioDTO = usuarioBO.findById(4l);
        SetorDTO setorDTO = setorBO.findById(2l);
     
        usuarioSetorDTO.setUsuarioDTO(usuarioDTO);
        usuarioSetorDTO.setSetorDTO(setorDTO);  
        usuarioSetorBO.save(usuarioSetorDTO);

o Erro:

could not bind value '0' to parameter: 4;
O indice da coluna está fora do intervalo: 4, número de colunas 3

Criado 18 de novembro de 2011
Respostas 0
Participantes 1