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