Ola Pessoas,
Boa tarde.
Estou tentando fazer um join da tab2 com a tab1 usando Criteria. Por questões relacionadas
ao mapeamento das tabelas estou fazendo da seguinte maneira:
Consultacad consulta = (Consultacad) entity;
String tab2 = “SELECT STATLZ as status FROM tab2 b where b.bem = bem and b.inc = inc”;
Criteria criteria = sessao.createCriteria(tab1.class)
criteria.setProjection( Projections.projectionList()
.add(Property.forName(“filial”).as(“cdfilial”))
.add(Property.forName(“bem”).as(“nrbem”))
.add(Property.forName("descricao))
.add(Property.forName(“custo”))
.add(Property.forName(“local”))
.add(Projections.sqlProjection( tab2, new String[] { “status” }, new Type[] { Hibernate.STRING })));
List listaSQL = criteria.list();
Ao executar o list ocorre o erro:
java.lang.NoSuchFieldError: STRING
Alguém sabe como solucionar esse erro?
Desde já agradeço
Reginaldo
Opa!!
Obrigado pela atenção…
Tentei essa solução… mas não consegui fazer compilar com o par
StandardBasicTypes.STRING
e org.hibernate.type.StandardBasicTypes
criteria.setProjection( Projections.projectionList()
.add(Property.forName("filial").as("cdfilial"))
.add(Property.forName("bem").as("nrbem"))
.add(Property.forName("descricao))
.add(Property.forName("custo"))
.add(Property.forName("local"))
.add(Projections.sqlProjection( tab2, new String[] { "status" }, new Type[] { Hibernate.STRING })));
Ta faltando uma aspas duplas em
.add(Property.forName("descricao))
Entãoo fiz duas alterações e resolvi:
primeira alteraçao
String tab2 = “( SELECT STATLZ FROM tab2 b where b.bem = this_.bem and b.inc = this_.inc ) as status )”;
…
Segunda alteraçao
.add(Projections.sqlProjection( tab2, new String[] { “status” }, new Type[] {})));
Simplesmente tirei a notação “Hibernate.STRING”
Funcionou.
Esse tal de Java é muito louco…
Reginaldo
Ah…
Então marcos4ft
Aquilo era só uma cópia simplificada do que esta realmente rodando…
De qualquer forma, obrigado.
Reginaldo