Olha só:
Eu tenho um relacionamento 1:N entre EventoManifestacao e IntervenienteEvento.
O bicho tá pegando quanto tenho que fazer o Select do LEFT JOIN. Eu tenho que pegar o resultado desse select e depois fazer o JOIN com ele. Assim é feito no SQL abaixo:
É... eu pensei no esquema da NativeQueries .... só que pensei que ficaria amarrado ao banco a implementação do SQL... com o @NamedQueries tiraria um pouco desse vinculo com o BD. Mas como é bem difícil que o BD mude, caso não tenha jeito, farei com o Native então...
Valeu ai pela ajuda e atenção.
select
evento.NR_EVT_MNFC as "sequencial",
evento.CD_GR_EVT as "grupoEvento",
evento.CD_INST_GST_EVT as "instGestora",
evento.CD_DEPE_GST_EVT as "depeGestora",
evento.CD_TIP_FML as "tipoFormulario",
evento.NM_EVT_MNFC as "nome",
evento.CD_OUVD_RSP_EVT as "ouvidDominio",
evento.CD_TIP_QLC as "tipQualif" ,
itvt.cd_depe_itvt as "depeSolucao",
itvt.cd_inst_itvt as "instSolucao"
from
evt_mnfc as evento left join (select nr_evt_mnfc, cd_depe_itvt, cd_inst_itvt from itvt_evt where cd_tip_itvt = 3) itvt
on evento.nr_evt_mnfc = itvt.nr_evt_mnfc
where
evento.IN_EVT_MNFC_ATI = 'S' and
evento.CD_TIP_QLC = 2
order by
evento.NM_EVT_MNFC
EventoManifestacao.class
public class EventoManifestacao implements java.io.Serializable
{
private int numeroEventoManifestacao;
private short codigoGrupoEvento;
private Integer codigoInstituicaoGestorEvento;
private Integer codigoDependenciaGestorEvento;
private short codigoTipoFormulario;
private String nomeEventoManifestacao;
private short quantidadeDiaSolucaoManifestacao;
private char indicadorVisualizacaoRestritoAdministrador;
private char indicadorSuperintendenciaResponsavelSolucao;
private char indicadorEventoManifestacaoAtivo;
private char indicadorAcompanhamentoSuperintendencia;
private Integer codigoOuvidoriaResponsavelEvento;
private short codigoTipoQualificacao;
private Set <IntervenienteEvento> intervenienteEvento;
private GrupoEventoManifestacao grupoEventoManifestacao;
public EventoManifestacao()
{}
public EventoManifestacao(int numeroEventoManifestacao, short codigoGrupoEvento, short codigoTipoFormulario,
String nomeEventoManifestacao, short quantidadeDiaSolucaoManifestacao,
char indicadorVisualizacaoRestritoAdministrador, char indicadorSuperintendenciaResponsavelSolucao,
char indicadorEventoManifestacaoAtivo, char indicadorAcompanhamentoSuperintendencia,
short codigoTipoQualificacao)
{
this.numeroEventoManifestacao = numeroEventoManifestacao;
this.codigoGrupoEvento = codigoGrupoEvento;
this.codigoTipoFormulario = codigoTipoFormulario;
this.nomeEventoManifestacao = nomeEventoManifestacao;
this.quantidadeDiaSolucaoManifestacao = quantidadeDiaSolucaoManifestacao;
this.indicadorVisualizacaoRestritoAdministrador = indicadorVisualizacaoRestritoAdministrador;
this.indicadorSuperintendenciaResponsavelSolucao = indicadorSuperintendenciaResponsavelSolucao;
this.indicadorEventoManifestacaoAtivo = indicadorEventoManifestacaoAtivo;
this.indicadorAcompanhamentoSuperintendencia = indicadorAcompanhamentoSuperintendencia;
this.codigoTipoQualificacao = codigoTipoQualificacao;
}
public EventoManifestacao(int numeroEventoManifestacao, short codigoGrupoEvento,
Integer codigoInstituicaoGestorEvento, Integer codigoDependenciaGestorEvento, short codigoTipoFormulario,
String nomeEventoManifestacao, short quantidadeDiaSolucaoManifestacao,
char indicadorVisualizacaoRestritoAdministrador, char indicadorSuperintendenciaResponsavelSolucao,
char indicadorEventoManifestacaoAtivo, char indicadorAcompanhamentoSuperintendencia,
Integer codigoOuvidoriaResponsavelEvento, short codigoTipoQualificacao)
{
this.numeroEventoManifestacao = numeroEventoManifestacao;
this.codigoGrupoEvento = codigoGrupoEvento;
this.codigoInstituicaoGestorEvento = codigoInstituicaoGestorEvento;
this.codigoDependenciaGestorEvento = codigoDependenciaGestorEvento;
this.codigoTipoFormulario = codigoTipoFormulario;
this.nomeEventoManifestacao = nomeEventoManifestacao;
this.quantidadeDiaSolucaoManifestacao = quantidadeDiaSolucaoManifestacao;
this.indicadorVisualizacaoRestritoAdministrador = indicadorVisualizacaoRestritoAdministrador;
this.indicadorSuperintendenciaResponsavelSolucao = indicadorSuperintendenciaResponsavelSolucao;
this.indicadorEventoManifestacaoAtivo = indicadorEventoManifestacaoAtivo;
this.indicadorAcompanhamentoSuperintendencia = indicadorAcompanhamentoSuperintendencia;
this.codigoOuvidoriaResponsavelEvento = codigoOuvidoriaResponsavelEvento;
this.codigoTipoQualificacao = codigoTipoQualificacao;
}
@Id
@Column(name = "NR_EVT_MNFC", unique = true, nullable = false)
@NotNull
public int getNumeroEventoManifestacao()
{
return this.numeroEventoManifestacao;
}
public void setNumeroEventoManifestacao(int numeroEventoManifestacao)
{
this.numeroEventoManifestacao = numeroEventoManifestacao;
}
@Column(name = "CD_GR_EVT", nullable = false)
@NotNull
public short getCodigoGrupoEvento()
{
return this.codigoGrupoEvento;
}
public void setCodigoGrupoEvento(short codigoGrupoEvento)
{
this.codigoGrupoEvento = codigoGrupoEvento;
}
@Column(name = "CD_INST_GST_EVT")
public Integer getCodigoInstituicaoGestorEvento()
{
return this.codigoInstituicaoGestorEvento;
}
public void setCodigoInstituicaoGestorEvento(Integer codigoInstituicaoGestorEvento)
{
this.codigoInstituicaoGestorEvento = codigoInstituicaoGestorEvento;
}
@Column(name = "CD_DEPE_GST_EVT")
public Integer getCodigoDependenciaGestorEvento()
{
return this.codigoDependenciaGestorEvento;
}
public void setCodigoDependenciaGestorEvento(Integer codigoDependenciaGestorEvento)
{
this.codigoDependenciaGestorEvento = codigoDependenciaGestorEvento;
}
@Column(name = "CD_TIP_FML", nullable = false)
@NotNull
public short getCodigoTipoFormulario()
{
return this.codigoTipoFormulario;
}
public void setCodigoTipoFormulario(short codigoTipoFormulario)
{
this.codigoTipoFormulario = codigoTipoFormulario;
}
@Column(name = "NM_EVT_MNFC", nullable = false, length = 100)
@NotNull
@Length(max = 100)
public String getNomeEventoManifestacao()
{
return this.nomeEventoManifestacao;
}
public void setNomeEventoManifestacao(String nomeEventoManifestacao)
{
this.nomeEventoManifestacao = nomeEventoManifestacao;
}
@Column(name = "QT_DD_SLC_MNFC", nullable = false)
@NotNull
public short getQuantidadeDiaSolucaoManifestacao()
{
return this.quantidadeDiaSolucaoManifestacao;
}
public void setQuantidadeDiaSolucaoManifestacao(short quantidadeDiaSolucaoManifestacao)
{
this.quantidadeDiaSolucaoManifestacao = quantidadeDiaSolucaoManifestacao;
}
@Column(name = "IN_VSLO_RSTT_ADM", nullable = false, length = 1)
@NotNull
public char getIndicadorVisualizacaoRestritoAdministrador()
{
return this.indicadorVisualizacaoRestritoAdministrador;
}
public void setIndicadorVisualizacaoRestritoAdministrador(char indicadorVisualizacaoRestritoAdministrador)
{
this.indicadorVisualizacaoRestritoAdministrador = indicadorVisualizacaoRestritoAdministrador;
}
@Column(name = "IN_SPCA_RSP_SLC", nullable = false, length = 1)
@NotNull
public char getIndicadorSuperintendenciaResponsavelSolucao()
{
return this.indicadorSuperintendenciaResponsavelSolucao;
}
public void setIndicadorSuperintendenciaResponsavelSolucao(char indicadorSuperintendenciaResponsavelSolucao)
{
this.indicadorSuperintendenciaResponsavelSolucao = indicadorSuperintendenciaResponsavelSolucao;
}
@Column(name = "IN_EVT_MNFC_ATI", nullable = false, length = 1)
@NotNull
public char getIndicadorEventoManifestacaoAtivo()
{
return this.indicadorEventoManifestacaoAtivo;
}
public void setIndicadorEventoManifestacaoAtivo(char indicadorEventoManifestacaoAtivo)
{
this.indicadorEventoManifestacaoAtivo = indicadorEventoManifestacaoAtivo;
}
@Column(name = "IN_ACPT_SPCA", nullable = false, length = 1)
@NotNull
public char getIndicadorAcompanhamentoSuperintendencia()
{
return this.indicadorAcompanhamentoSuperintendencia;
}
public void setIndicadorAcompanhamentoSuperintendencia(char indicadorAcompanhamentoSuperintendencia)
{
this.indicadorAcompanhamentoSuperintendencia = indicadorAcompanhamentoSuperintendencia;
}
@Column(name = "CD_OUVD_RSP_EVT")
public Integer getCodigoOuvidoriaResponsavelEvento()
{
return this.codigoOuvidoriaResponsavelEvento;
}
public void setCodigoOuvidoriaResponsavelEvento(Integer codigoOuvidoriaResponsavelEvento)
{
this.codigoOuvidoriaResponsavelEvento = codigoOuvidoriaResponsavelEvento;
}
@Column(name = "CD_TIP_QLC", nullable = false)
@NotNull
public short getCodigoTipoQualificacao()
{
return this.codigoTipoQualificacao;
}
public void setCodigoTipoQualificacao(short codigoTipoQualificacao)
{
this.codigoTipoQualificacao = codigoTipoQualificacao;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name = "CD_GR_EVT", nullable = false,insertable=false,updatable=false)
@NotNull
public GrupoEventoManifestacao getGrupoEventoManifestacao() {
return grupoEventoManifestacao;
}
public void setGrupoEventoManifestacao(
GrupoEventoManifestacao grupoEventoManifestacao) {
this.grupoEventoManifestacao = grupoEventoManifestacao;
}
@OneToMany(mappedBy="eventoManifestacao",fetch=FetchType.LAZY)
public Set<IntervenienteEvento> getIntervenienteEvento() {
return intervenienteEvento;
}
public void setIntervenienteEvento(Set<IntervenienteEvento> intervenienteEvento) {
this.intervenienteEvento = intervenienteEvento;
}
}
IntervenienteEvento.class
public class IntervenienteEvento implements java.io.Serializable
{
private IntervenienteEventoId id;
//
private EventoManifestacao eventoManifestacao;
public IntervenienteEvento()
{}
public IntervenienteEvento(IntervenienteEventoId id)
{
this.id = id;
}
@EmbeddedId
@AttributeOverrides(
{
@AttributeOverride(name = "numeroEventoManifestacao", column = @Column(name = "NR_EVT_MNFC", nullable = false)),
@AttributeOverride(name = "codigoTipoInterveniente", column = @Column(name = "CD_TIP_ITVT", nullable = false)),
@AttributeOverride(name = "codigoDependenciaInterveniente", column = @Column(name = "CD_DEPE_ITVT", nullable = false)),
@AttributeOverride(name = "codigoInstituicaoInterveniente", column = @Column(name = "CD_INST_ITVT", nullable = false)) })
@NotNull
public IntervenienteEventoId getId()
{
return this.id;
}
public void setId(IntervenienteEventoId id)
{
this.id = id;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="NR_EVT_MNFC", nullable=false, insertable=false, updatable=false)
public EventoManifestacao getEventoManifestacao() {
return eventoManifestacao;
}
public void setEventoManifestacao(EventoManifestacao eventoManifestacao) {
this.eventoManifestacao = eventoManifestacao;
}
}
IntervenienteEventoId.class
@Embeddable
public class IntervenienteEventoId implements java.io.Serializable
{
private int numeroEventoManifestacao;
private short codigoTipoInterveniente;
private int codigoDependenciaInterveniente;
private int codigoInstituicaoInterveniente;
public IntervenienteEventoId()
{}
public IntervenienteEventoId(int numeroEventoManifestacao, short codigoTipoInterveniente,
int codigoDependenciaInterveniente, int codigoInstituicaoInterveniente)
{
this.numeroEventoManifestacao = numeroEventoManifestacao;
this.codigoTipoInterveniente = codigoTipoInterveniente;
this.codigoDependenciaInterveniente = codigoDependenciaInterveniente;
this.codigoInstituicaoInterveniente = codigoInstituicaoInterveniente;
}
@Column(name = "NR_EVT_MNFC", nullable = false)
@NotNull
public int getNumeroEventoManifestacao()
{
return this.numeroEventoManifestacao;
}
public void setNumeroEventoManifestacao(int numeroEventoManifestacao)
{
this.numeroEventoManifestacao = numeroEventoManifestacao;
}
@Column(name = "CD_TIP_ITVT", nullable = false)
@NotNull
public short getCodigoTipoInterveniente()
{
return this.codigoTipoInterveniente;
}
public void setCodigoTipoInterveniente(short codigoTipoInterveniente)
{
this.codigoTipoInterveniente = codigoTipoInterveniente;
}
@Column(name = "CD_DEPE_ITVT", nullable = false)
@NotNull
public int getCodigoDependenciaInterveniente()
{
return this.codigoDependenciaInterveniente;
}
public void setCodigoDependenciaInterveniente(int codigoDependenciaInterveniente)
{
this.codigoDependenciaInterveniente = codigoDependenciaInterveniente;
}
@Column(name = "CD_INST_ITVT", nullable = false)
@NotNull
public int getCodigoInstituicaoInterveniente()
{
return this.codigoInstituicaoInterveniente;
}
public void setCodigoInstituicaoInterveniente(int codigoInstituicaoInterveniente)
{
this.codigoInstituicaoInterveniente = codigoInstituicaoInterveniente;
}
public boolean equals(Object other)
{
if ((this == other))
return true;
if ((other == null))
return false;
if (!(other instanceof IntervenienteEventoId))
return false;
IntervenienteEventoId castOther = (IntervenienteEventoId) other;
return (this.getNumeroEventoManifestacao() == castOther.getNumeroEventoManifestacao())
&& (this.getCodigoTipoInterveniente() == castOther.getCodigoTipoInterveniente())
&& (this.getCodigoDependenciaInterveniente() == castOther.getCodigoDependenciaInterveniente())
&& (this.getCodigoInstituicaoInterveniente() == castOther.getCodigoInstituicaoInterveniente());
}
public int hashCode()
{
int result = 17;
result = 37 * result + this.getNumeroEventoManifestacao();
result = 37 * result + this.getCodigoTipoInterveniente();
result = 37 * result + this.getCodigoDependenciaInterveniente();
result = 37 * result + this.getCodigoInstituicaoInterveniente();
return result;
}
}