Boa noite pessoal!!
Passei o dia batendo cabeça com isso, então se faltar alguma informação ou não for claro, peço desculpas ;)
Conto com vocês!!
preciso gerar a query 2, porém o mais próximo que chego é a query 1.
Onde está o problema:
ICriteria query = session.CreateCriteria<Modelo.Etapa.EtEtapaCobranca>("etapa");
query.Add(Subqueries.PropertyIn("etapa.Id",
DetachedCriteria.For<Modelo.Etapa.EtVinculoEtapa>("vinculo")
********* faz o IN da query 1, que dá erro, é justo
.SetProjection(Projections.Property("vinculo.Etapa"))
********* não reconhece a propriedade Id da etapa e dá erro.
)
);
(1)
SELECT this_
.etapaCobrancaId as etapaCob1_35_0_,
this_.Observacoes as Observac2_35_0_,
this_.workflowId as workflowId35_0_,
this_.chamadoId as chamadoId35_0_
FROM
ET_EtapaCobranca this_
WHERE
this_.etapaCobrancaId in
(SELECT this_0_.tipoEtapa as y0_, this_0_.etapaId as y1_ FROM ET_VinculoEtapa this_0_)
(2)
SELECT this_
.etapaCobrancaId as etapaCob1_35_0_,
this_.Observacoes as Observac2_35_0_,
this_.workflowId as workflowId35_0_,
this_.chamadoId as chamadoId35_0_
FROM
ET_EtapaCobranca this_
WHERE
this_.etapaCobrancaId in
(SELECT this_0_.etapaId as y1_ FROM ET_VinculoEtapa this_0_
where this_0_.tipoEtapa = 'Modelo.Etapa.EtEntidadeCobranca')
Abaixo o mapeamento da classe ET_EtapaCobranca e o da ET_VinculoEtapa
public EtEtapaCobrancaMap()
{
Table("ET_EtapaCobranca");
Id(x => x.Id)
.Column("etapaCobrancaId");
References(x => x.Workflow)
.Column("workflowId");
References(x => x.Chamado)
.Column("chamadoId");
Map(x => x.Observacoes);
}
public EtVinculoEtapaMap()
{
Table("ET_VinculoEtapa");
Id(x => x.Id)
.Column("vinculoEtapaId");
ReferencesAny(x => x.Entidade)
.EntityTypeColumn("tipoEntidade")
.EntityIdentifierColumn("entidadeId")
.IdentityType<Int32>()
.AddMetaValue<EtEntidadeCobranca>("Modelo.Etapa.EtEntidadeCobranca");
ReferencesAny(x => x.Etapa)
.EntityTypeColumn("tipoEtapa")
.EntityIdentifierColumn("etapaId")
.IdentityType<Int32>()
.MetaType<string>()
.AddMetaValue<EtEtapaCobranca>("Modelo.Etapa.EtEtapaCobranca");
}