Ajuda com Hibernate

2 respostas
hfernandes

Oi Pessoal!!

Estou desenvolvendo uma aplicação onde tenho um relacionamento muitos para muitos cod abaixo:
@Embeddable
public class SolicitacaoCooperativasPK implements Serializable {
       
    private Long voucher;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="solicitacao_id")
    private Solicitacao solicitacao;
    
    @ManyToOne(fetch=FetchType.EAGER)
    @JoinColumn(name="cooperativa_id")
    private Cooperativas cooperativa;
 get e set...
@Entity
@Table(name="solicitacao_cooperativas")
public class SolicitacaoCooperativas {
    @EmbeddedId
    private SolicitacaoCooperativasPK chaveComposta;   
    private Double valor;
    get e set...
quando eu tento executar esta query
lista=dao.getSession().createQuery("from SolicitacaoCooperativas as s right outer join fetch s.chaveComposta.solicitacao.solicitacao_id").list();
ele retorna o erro abaixo:
Exception in thread "main" java.lang.NullPointerException
        at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:310)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.joinElement(HqlSqlBaseWalker.java:3275)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3067)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2945)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281)
        at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229)
        at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:228)
        at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:160)
        at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:111)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:77)
        at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:56)
        at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:72)
        at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133)
        at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112)
        at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1623)

Alguém sabe porque? alguém pode me ajudar?

Estou querendo que ele mostre os dados da tabela solicitação endependentemente de que se tenha
registro na tabela cooperativas

obrigado

2 Respostas

vanderlanio

Faz um Debug, isso tah com cara que seu obj DAO esta nulo, ou esta retornando nulo ao inves de um Session !

hfernandes

Oi!!!
mudei minha consulta para:

Criteria criteria = dao.getSession().createCriteria(SolicitacaoCooperativas.class) .createCriteria("chaveComposta.solicitacao") .add(Restrictions.eq("estado", "EmAndamento"));

mas dá o seguinte erro:

Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not execute query at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2223) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:94) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1569) at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:283) at org.hibernate.impl.CriteriaImpl$Subcriteria.list(CriteriaImpl.java:458) at br.com.memora.managed.SolicitacaoMB.setListaEmAndamento(SolicitacaoMB.java:60) at br.com.memora.managed.SolicitacaoMB.<init>(SolicitacaoMB.java:51) at teste.main(teste.java:19) Caused by: java.sql.SQLException: Unknown column 'solicitaca1_.estado' in 'where clause' at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2975) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1600) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1695) at com.mysql.jdbc.Connection.execSQL(Connection.java:3026) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1137) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:1231) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2220) ... 9 more Java Result: 1

o problema é que existe este campo “estado” na tabela e no meu bean, mas ele continua dando erro.

obrigado.

Criado 8 de maio de 2008
Ultima resposta 9 de mai. de 2008
Respostas 2
Participantes 2