Ao realizar as alterações da aula, deu o seguinte erro na anotação @EmbeddedId na classe Categoria: Embedded Id class should include method definitions for equals() and hashcode()
Mesmo com o erro, tentei executar a classe de teste CadastroDeProduto, o qual deu o seguinte StackTrace:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.QueryException: could not resolve property: nome of: br.com.alura.loja1.modelo.Categoria [SELECT p FROM br.com.alura.loja1.modelo.Produto p WHERE p.categoria.nome = :nome] at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:138) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:181) at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:188) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:725) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:816) at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:23) at br.com.alura.loja1.dao.ProdutoDao.buscarPorNomeDaCategoria(ProdutoDao.java:54) at br.com.alura.loja1.testes.CadastroDeProduto.main(CadastroDeProduto.java:27) Caused by: org.hibernate.QueryException: could not resolve property: nome of: br.com.alura.loja1.modelo.Categoria [SELECT p FROM br.com.alura.loja1.modelo.Produto p WHERE p.categoria.nome = :nome] at org.hibernate.QueryException.generateQueryException(QueryException.java:120) at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144) at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:113) at org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:73) at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:162) at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:604) at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:716) ... 4 more Caused by: org.hibernate.QueryException: could not resolve property: nome of: br.com.alura.loja1.modelo.Categoria at org.hibernate.persister.entity.AbstractPropertyMapping.propertyException(AbstractPropertyMapping.java:77) at org.hibernate.persister.entity.AbstractPropertyMapping.toType(AbstractPropertyMapping.java:71) at org.hibernate.persister.entity.AbstractEntityPersister.toType(AbstractEntityPersister.java:2043) at org.hibernate.hql.internal.ast.tree.FromElementType.getPropertyType(FromElementType.java:412) at org.hibernate.hql.internal.ast.tree.FromElement.getPropertyType(FromElement.java:520) at org.hibernate.hql.internal.ast.tree.DotNode.getDataType(DotNode.java:694) at org.hibernate.hql.internal.ast.tree.DotNode.prepareLhs(DotNode.java:269) at org.hibernate.hql.internal.ast.tree.DotNode.resolve(DotNode.java:209) at org.hibernate.hql.internal.ast.HqlSqlWalker.resolve(HqlSqlWalker.java:1053) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.expr(HqlSqlBaseWalker.java:1303) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.exprOrSubquery(HqlSqlBaseWalker.java:4771) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.comparisonExpr(HqlSqlBaseWalker.java:4237) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.logicalExpr(HqlSqlBaseWalker.java:2161) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.whereClause(HqlSqlBaseWalker.java:827) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:621) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:325) at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:273) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:276) at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:192) ... 10 more
A classe Categoria está assim:
@Entity @Table(name = "categorias") public class Categoria {
@EmbeddedId
private CategoriaId id;
public Categoria() {
}
public Categoria(String nome) {
this.id = new CategoriaId(nome, "xpto");
}
public String getNome() {
return this.id.getNome();
}
}
E a classe CategoriaId está assim:
@Embeddable public class CategoriaId implements Serializable { private static final long serialVersionUID = 1L;
private String nome;
private String tipo;
public CategoriaId() {
}
public CategoriaId(String nome, String tipo) {
this.nome = nome;
this.tipo = tipo;
}
//getters e setters
}
Código a princípio, tá igual do prof. Se puderem me ajudar a achar onde está o meu erro, agradeço.