Estou tentando fazer um sql e preciso de ajuda. Quero pegar todos menor q a data que to passando que possui o produto 1.
codigo
Date data4 = new Date("11/21/2013");
DAO<EstoqueEntrada> daoEstoqueEntrada = new DAO<EstoqueEntrada>(EstoqueEntrada.class);
List<EstoqueEntrada> teste = daoEstoqueEntrada.buscaData("data", data4 , "produto", 1L);
for(EstoqueEntrada e : teste){
System.out.println("\n id: " + e.getId());
}
dao
@SuppressWarnings("unchecked")
public List<T> buscaData(String colunaData, Date data, String colunaDados, Long dados) {
session.beginTransaction().begin();
Criteria c = session.createCriteria(persistentClass);
c.add(Restrictions.gt(colunaData, data));
c.add(Restrictions.eq(colunaDados, dados));
c.add(Restrictions.eq("status", true));
session.beginTransaction().commit();
return c.list();
}
erro
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate:
select
this_.id as id17_6_,
this_.balanco_id as balanco6_17_6_,
this_.data as data17_6_,
this_.fornecedor_id as fornecedor7_17_6_,
this_.nf as nf17_6_,
this_.produto_id as produto8_17_6_,
this_.qnt as qnt17_6_,
this_.status as status17_6_,
estoquebal2_.id as id16_0_,
estoquebal2_.data as data16_0_,
estoquebal2_.perca as perca16_0_,
estoquebal2_.produto_id as produto6_16_0_,
estoquebal2_.quantidade as quantidade16_0_,
estoquebal2_.status as status16_0_,
produto3_.id as id23_1_,
produto3_.Descricao as Descricao23_1_,
produto3_.codBarra as codBarra23_1_,
produto3_.dataCadastro as dataCada4_23_1_,
produto3_.marca_id as marca7_23_1_,
produto3_.nome as nome23_1_,
produto3_.status as status23_1_,
fornecedor4_.id as id19_2_,
fornecedor4_.cnpj as cnpj19_2_,
fornecedor4_.endereco_id as endereco8_19_2_,
fornecedor4_.nome as nome19_2_,
fornecedor4_.nomeFantasia as nomeFant4_19_2_,
fornecedor4_.responsavel as responsa5_19_2_,
fornecedor4_.status as status19_2_,
fornecedor4_.telefone as telefone19_2_,
endereco5_.id as id2_3_,
endereco5_.bairro as bairro2_3_,
endereco5_.cidade_id as cidade9_2_3_,
endereco5_.lougradouro as lougrado3_2_3_,
endereco5_.numero as numero2_3_,
endereco5_.obs as obs2_3_,
endereco5_.rua as rua2_3_,
endereco5_.status as status2_3_,
endereco5_.tipoCasa as tipoCasa2_3_,
produto6_.id as id23_4_,
produto6_.Descricao as Descricao23_4_,
produto6_.codBarra as codBarra23_4_,
produto6_.dataCadastro as dataCada4_23_4_,
produto6_.marca_id as marca7_23_4_,
produto6_.nome as nome23_4_,
produto6_.status as status23_4_,
produtomar7_.id as id24_5_,
produtomar7_.nome as nome24_5_,
produtomar7_.status as status24_5_
from
sip.EstoqueEntrada this_
left outer join
sip.EstoqueBalanco estoquebal2_
on this_.balanco_id=estoquebal2_.id
left outer join
sip.Produto produto3_
on estoquebal2_.produto_id=produto3_.id
left outer join
sip.Fornecedor fornecedor4_
on this_.fornecedor_id=fornecedor4_.id
left outer join
sip.Endereco endereco5_
on fornecedor4_.endereco_id=endereco5_.id
left outer join
sip.Produto produto6_
on this_.produto_id=produto6_.id
left outer join
sip.ProdutoMarca produtomar7_
on produto6_.marca_id=produtomar7_.id
where
this_.data>?
and this_.produto_id=?
and this_.status=?
Exception in thread "main" org.hibernate.PropertyAccessException: could not get a field value by reflection getter of br.com.SIP.Garagem.Model.Produto.id
at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:58)
at org.hibernate.tuple.entity.AbstractEntityTuplizer.getIdentifier(AbstractEntityTuplizer.java:206)
at org.hibernate.persister.entity.AbstractEntityPersister.getIdentifier(AbstractEntityPersister.java:3619)
at org.hibernate.persister.entity.AbstractEntityPersister.isTransient(AbstractEntityPersister.java:3335)
at org.hibernate.engine.ForeignKeys.isTransient(ForeignKeys.java:204)
at org.hibernate.engine.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:241)
at org.hibernate.type.EntityType.getIdentifier(EntityType.java:430)
at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:110)
at org.hibernate.loader.Loader.bindPositionalParameters(Loader.java:1728)
at org.hibernate.loader.Loader.bindParameterValues(Loader.java:1699)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1589)
at org.hibernate.loader.Loader.doQuery(Loader.java:696)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
at org.hibernate.loader.Loader.doList(Loader.java:2228)
at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125)
at org.hibernate.loader.Loader.list(Loader.java:2120)
at org.hibernate.loader.criteria.CriteriaLoader.list(CriteriaLoader.java:118)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1596)
at org.hibernate.impl.CriteriaImpl.list(CriteriaImpl.java:306)
at br.com.SIP.Geral.DAO.DAO.buscaData(DAO.java:264)
at br.com.SIP.Geral.Util.Testes.comparaData(Testes.java:44)
at br.com.SIP.Geral.Util.Testes.main(Testes.java:17)
Caused by: java.lang.IllegalArgumentException: Can not set java.lang.Long field br.com.SIP.Garagem.Model.Produto.id to java.lang.Long
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Unknown Source)
at sun.reflect.UnsafeFieldAccessorImpl.ensureObj(Unknown Source)
at sun.reflect.UnsafeObjectFieldAccessorImpl.get(Unknown Source)
at java.lang.reflect.Field.get(Unknown Source)
at org.hibernate.property.DirectPropertyAccessor$DirectGetter.get(DirectPropertyAccessor.java:55)
... 21 more
Estrutura Banco:
CREATE TABLE `sip`.`estoqueentrada` (
`id` bigint(20) NOT NULL auto_increment,
`data` date default NULL,
`nf` varchar(255) default NULL,
`qnt` int(11) NOT NULL,
`status` char(1) NOT NULL,
`balanco_id` bigint(20) default NULL,
`fornecedor_id` bigint(20) default NULL,
`produto_id` bigint(20) default NULL,
PRIMARY KEY (`id`),
KEY `FKA92F10DFF43791AE` (`produto_id`),
KEY `FKA92F10DF625C9486` (`fornecedor_id`),
KEY `FKA92F10DF69BFA14E` (`balanco_id`),
CONSTRAINT `FKA92F10DF625C9486` FOREIGN KEY (`fornecedor_id`) REFERENCES `fornecedor` (`id`),
CONSTRAINT `FKA92F10DF69BFA14E` FOREIGN KEY (`balanco_id`) REFERENCES `estoquebalanco` (`id`),
CONSTRAINT `FKA92F10DFF43791AE` FOREIGN KEY (`produto_id`) REFERENCES `produto` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1;
alguem ? Obrigado desde já!