List listas = em.createQuery("Select nota FROM NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP'").getResultList();
[code]
e deu esse erro
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: NotaFiscalItem of: br.com.exemplojpa.modelo.NotaFiscal [Select nota FROM br.com.exemplojpa.modelo.NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP']
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
at br.com.exemplojpa.teste.TesteNFCreateQuery1.main(TesteNFCreateQuery1.java:30)
Caused by: org.hibernate.QueryException: could not resolve property: NotaFiscalItem of: br.com.exemplojpa.modelo.NotaFiscal [Select nota FROM br.com.exemplojpa.modelo.NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP']
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1362)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:567)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:308)
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)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
... 1 more
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA9");
EntityManager em = emf.createEntityManager();
System.out.println("Inico ...testCreateQuery()");
List listas = em.createQuery("Select nota FROM NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP'").getResultList();
System.out.println("Size listas = "+listas.size());
for (int i=0;i<listas.size();i++){
NotaFiscal rs = (NotaFiscal) listas.get(i);
if (i==0){
System.out.println("Nota ID ="+rs.getId());
System.out.println("Nome ="+rs.getDescricao());
System.out.println("___________________________________________");
System.out.println(" Cliente ID ="+rs.getCliente().getId());
System.out.println(" Cliente Nome = "+rs.getCliente().getNome());
System.out.println(" Cliente Estado = "+rs.getCliente().getEstado());
System.out.println("___________________________________________");
}
for (NotaFiscalItem it :rs.getItenss()){
System.out.println(" Item ID ="+it.getId());
System.out.println(" Seq Item = "+it.getSeqItem());
System.out.println(" Qtde Item = "+it.getQtdeItem());
System.out.println(" Valor Item = "+it.getValor());
}
System.out.println("___________________________________________");
}
}
List listas = em.createQuery("Select nota FROM NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP'").getResultList();
e deu esse erro
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: NotaFiscalItem of: br.com.exemplojpa.modelo.NotaFiscal [Select nota FROM br.com.exemplojpa.modelo.NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP']
at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:624)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:96)
at br.com.exemplojpa.teste.TesteNFCreateQuery1.main(TesteNFCreateQuery1.java:30)
Caused by: org.hibernate.QueryException: could not resolve property: NotaFiscalItem of: br.com.exemplojpa.modelo.NotaFiscal [Select nota FROM br.com.exemplojpa.modelo.NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP']
at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:44)
at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:38)
at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:1362)
at org.hibernate.hql.ast.tree.FromElementType.getPropertyType(FromElementType.java:279)
at org.hibernate.hql.ast.tree.FromElement.getPropertyType(FromElement.java:386)
at org.hibernate.hql.ast.tree.DotNode.getDataType(DotNode.java:567)
at org.hibernate.hql.ast.tree.DotNode.prepareLhs(DotNode.java:241)
at org.hibernate.hql.ast.tree.DotNode.resolve(DotNode.java:188)
at org.hibernate.hql.ast.tree.FromReferenceNode.resolve(FromReferenceNode.java:94)
at org.hibernate.hql.ast.HqlSqlWalker.createFromJoinElement(HqlSqlWalker.java:308)
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)
at org.hibernate.ejb.AbstractEntityManagerImpl.createQuery(AbstractEntityManagerImpl.java:93)
... 1 more
public static void main(String[] args) {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("JPA9");
EntityManager em = emf.createEntityManager();
System.out.println("Inico ...testCreateQuery()");
List listas = em.createQuery("Select nota FROM NotaFiscal nota JOIN nota.NotaFiscalItem item JOIN nota.cliente cliente where estado='SP'").getResultList();
System.out.println("Size listas = "+listas.size());
for (int i=0;i<listas.size();i++){
NotaFiscal rs = (NotaFiscal) listas.get(i);
if (i==0){
System.out.println("Nota ID ="+rs.getId());
System.out.println("Nome ="+rs.getDescricao());
System.out.println("___________________________________________");
System.out.println(" Cliente ID ="+rs.getCliente().getId());
System.out.println(" Cliente Nome = "+rs.getCliente().getNome());
System.out.println(" Cliente Estado = "+rs.getCliente().getEstado());
System.out.println("___________________________________________");
}
for (NotaFiscalItem it :rs.getItenss()){
System.out.println(" Item ID ="+it.getId());
System.out.println(" Seq Item = "+it.getSeqItem());
System.out.println(" Qtde Item = "+it.getQtdeItem());
System.out.println(" Valor Item = "+it.getValor());
}
System.out.println("___________________________________________");
}
}
ufa consegui descobrir o que estava fazendo de errado …
lá vai se alguém cair no mesmo erro
!!!
StringBuffer jhl = new StringBuffer();
jhl.append("SELECT user FROM ImsUserImpl user JOIN user.documents doc where doc.user=6 ");
List usuariosdoctos = imsDBMng.getManager().createQuery(jhl.toString()).getResultList();
o join é feito em cima do atributos que estão dentro do objeto User
e o documents é um List declarado dentro do objeto User
public class User{
@Id
@GeneratedValue
@Column(name = "USER_ID")
/** Identificador único */
private Long id;
@Column(nullable = false)
/** Nome do usuário */
private String name;
@Column(nullable = false)
/** E-mail do usuário */
private String email;
@OneToMany(mappedBy = "user",cascade =javax.persistence.CascadeType.ALL)
private List<Document> documents = new ArrayList<Document>();
//
classe Document
@ManyToOne
private User user