Я изучаю Hibernate, но продолжаю получать следующую ошибку, когда пытаюсь отфильтровать с помощью brandId:
МОЛЧАТЬ: El Servlet.service () para el servlet [Веб-приложение Джерси] ru el contextx con ruta [/ restAppJSON] lanzó la excepción [org.hibernate.query.sqm.InterpretationException: Ошибка при интерпретации запроса [из продуктов, где brandId = 5]; это может указывать на проблему semanti c (пользовательский запрос) или ошибку в синтаксическом анализаторе] con causa raíz org.hibernate.query.sqm.ParsingException: Не удалось интерпретировать точку-идентификатор: brandId в org.hibernate.query.hql. internal.BasicDotIdentifierConsumer $ BaseLocalSequencePart.resolvePathPart (BasicDotIdentifierConsumer. java: 225) в org.hibernate.query.hql.internal.BasicDotIdentifierConsumer.consumeIdentifier (базовыйDotIdentifier.high.hr. SemanticQueryBuilder.visitDotIdentifierSequence (SemanticQueryBuilder. java: 2725) в org.hibernate.query.hql.internal.SemanticQueryBuilder.visitGeneralPathFragment (SemanticQueryBuilder. * 1048quer. SemanticQueryBuilder. java: 149) в org.hibernate.grammars.hql.HqlParser $ GeneralPathFragmentContext.accept (HqlParser. java: 2947) в org.hibernate.query.hql.internal.SemanticQueryBuderBuder *: 2654) в org.hibernate. query.hql.internal.SemanticQueryBuilder.visitPath (SemanticQueryBuilder. java: 149) в org.hibernate.grammars.hql.HqlParser $ PathContext.accept (HqlParser. java: 2745) в org.hiber.hiber. internal.SemanticQueryBuilder.visitPathExpression (SemanticQueryBuilder. java: 761) в org.hibernate.grammars.hql.HqlParser $ PathExpressionContext.accept (HqlParser. java: 5232) в org.ternal.huq. visitEqualityPredicate (SemanticQueryBuilder. java: 1144) по адресу org.hibernate.query.hql.internal.SemanticQueryBuilder.visitEqualityPredicate (SemanticQueryBuilder. java: 149) по адресу org.hibernate.lical.qer. java: 4310) по адресу org.hibernate.query.hql.internal.SemanticQueryBuilder.visitWhereClause (SemanticQueryBuilder. java: 1070) по адресу org.hibernate.query.hql.internal.SemanticQueryBuilder.visuWuilCuileCuuSuerWuilderSuuWueryCuileWuserWisuWuilder. 149) в org.hibernate.grammars.hql.HqlParser $ WhereClauseContext.accept (HqlParser. java: 4086) в орг. hibernate.query.hql. , .internal.StandardHqlTranslator.translate (StandardHqlTranslator. java: 47) в org.hibernate.internal.AbstractSharedSessionContract.lambda $ createQuery $ 1 (AbstractSharedSessionContract. java: 621) (внешний вид). Интерфейс. QueryInterpretationCacheStandardImpl. java: 114) в org.hibernate.internal.AbstractSharedSessionContract.createQuery (AbstractSharedSessionContract. java: 619) в org.hibernate.internal.AbstractSharedSessionConteryContract.rection.refter.refter.rect.rect.reject.reternal. 1071 *: 603) в org.hibernate.internal.AbstractSharedSessionContract.createQuery (AbstractSharedSessionContract. java: 97) в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в sun.reflect.Nativeormp .reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) в java .lang.reflect.Method.invoke (Неизвестный источник) в org.hibernate.context.internal. ThreadLocalSessionContext $ TransactionProtectionWrapper.invoke (ThreadLocalSessionContext. java: 351) по адресу com.sun.proxy. $ Proxy64.createQuery (неизвестный источник) по адресу com.edo.showroom.hibernate.DAO.ProductDAO.getProductsByBrand (ProductDAO *). 21) в com.edo.showroom.service.ProductService.getProductsByBrand (ProductService. java: 13) в com.edo.showroom.resources.Products.getProductsByBrand (Products. java: 20) в sun.reflect.NativeMethodAccessorImpl .invoke0 (собственный метод) в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) в java .lang.reflect.Method.invoke (неизвестный источник) atg или sh .jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda $ static $ 0 (ResourceMethodInvocationHandlerFactory. java: 52) в org.glassfi sh .jersey.server.model.internal.Set java: 124) в org.glassfi sh .jersey.server.model.internal.A bstractJavaResourceMethodDispatcher.invoke (AbstractJavaResourceMethodDispatcher. java: 167) по адресу org.glassfi sh .jersey.server.model.internal.JavaResourceMethodDispatcherProvider $ Type * OutInvoker.ava.group.hog jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch (AbstractJavaResourceMethodDispatcher. java: 79) в org.glassfi sh .jersey.server.model.ResourceMethodInvoker.invoke 10 * .gr. sh .jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker. java: 391) в org.glassfi sh .jersey.server.model.ResourceMethodInvoker.apply (ResourceMethodInvoker. * 1094 или * 1094) .glassfi sh .jersey.server.ServerRuntime $ 1.run (ServerRuntime. java: 253) в org.glassfi sh .jersey.internal.Errors $ 1.call (Ошибки. java: 248) в org .glassfi sh .jersey.internal.Errors $ 1.call (Ошибки. java: 244) в org.glassfi sh .jersey.internal.Errors.process (Ошибки. java: 292) a t org.glassfi sh .jersey.internal.Errors.process (Ошибки. java: 274) в org.glassfi sh .jersey.internal.Errors.process (Ошибки. java: 244) в организации .glassfi sh .jersey.process.internal.RequestScope.runInScope (RequestScope. java: 265) в org.glassfi sh .jersey.server.ServerRuntime.process (ServerRuntime. java: 232) в организации .glassfi sh .jersey.server.ApplicationHandler.handle (ApplicationHandler. java: 680) в org.glassfi sh .jersey.servlet.WebComponent.serviceImpl (WebComponent. java: 394) в org.glassfi. sh .jersey.servlet.WebComponent.service (WebComponent. java: 346) в org.glassfi sh .jersey.servlet.ServletContainer.service (ServletContainer. java: 366) в org.glassfi sh .jersey.servlet.ServletContainer.service (ServletContainer. java: 319) в org.glassfi sh .jersey.servlet.ServletContainer.service (ServletContainer. java: 205) в org. apache .catalina .core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain. java: 231) в орг. apache .catalina.core.ApplicationFilterChai n.doFilter (ApplicationFilterChain. java: 166) в орг. apache .tomcat.websocket.server.WsFilter.doFilter (WsFilter. java: 53) в орг. apache .catalina.core.ApplicationFilterChain. internalDoFilter (ApplicationFilterChain. java: 193) в орг. apache .catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain. java: 166) в орг. apache .catalina.core.StandardWrapperValve. java: 202) в орг. apache .catalina.core.StandardContextValve.invoke (StandardContextValve. java: 96) в орг. apache .catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase. java: 541) в орг. apache .catalina.core.StandardHostValve.invoke (StandardHostValve. java: 139) в орг. apache .catalina.valves.ErrorReportValve.invoke (ErrorReportValve. java: 92) в орг. apache .catalina.valves.AbstractAccessLogValve.invoke (AbstractAccessLogValve. java: 678) в орг. apache .catalina.core.StandardEngineValve.invoke (StandardEngineValve. java: 74) или 1147 * .catalina.connector.CoyoteAdapter.service (CoyoteAdapter. java: 343) в орг. apache .coyote.http11.Http11Processor.service (Http11Processor. java: 367) в орг. apache .coyote .AbstractProcessorLight.process (AbstractProcessorLight. java: 65) в орг. apache .coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol. java: 860) в орг. apache .tomcat.util. net .NioEndpoint $ SocketProcessor.doRun (NioEndpoint. java: 1598) в орг. apache .tomcat.util. net .SocketProcessorBase.run (SocketProcessorBase. java: 49) в java .util.concurrent .ThreadPoolExecutor.runWorker (неизвестный источник) в java .util.concurrent.ThreadPoolExecutor $ Worker.run (неизвестный источник) в org. apache .tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread. * 1164 : 61) в java .lang.Thread.run (Неизвестный источник)
эти мои 2 таблицы в mysql
CREATE TABLE brands
(brandId
int (11) NOT NULL AUTO_INCREMENT, brandName
varchar (45) NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (brandId
), УНИКАЛЬНЫЙ КЛЮЧ brandid_UNIQUE
(brandId
)) ДВИГАТЕЛЬ = InnoDB AUTO_INCREMENT = 9 CHARSET ПО УМОЛЧАНИЮ = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
CREATE TABLE products
(productId
int (11) NOT NULL AUTO_INCREMENT, NULL AUTO_INCREMENT, (11) DEFAULT NULL, productname
varchar (45) DEFAULT NULL, category
varchar (45) DEFAULT NULL, cost
двойной DEFAULT NULL, ПЕРВИЧНЫЙ КЛЮЧ (productId
), КЛЮЧ brandid_idx
(brandId
) , CONSTRAINT brandid
FOREIGN KEY (brandId
) ССЫЛКИ brands
(brandId
)) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARSET DEFAULT = utf8mb4 COLLATE = utf8mb4_0900_ai_ci
Это мои классы сущностей:
@Entity(name = "products")
@Table(name = "products")
public class ProductEntity {
@Id
@Column(name = "productId")
private int productId;
@ManyToOne(targetEntity = BrandEntity.class)
@JoinColumn()
private BrandEntity brandEntity;
@Column(name = "productname")
private String productName;
@Column(name = "category")
private String category;
@Column(name = "cost")
private double cost;
public ProductEntity() {
}
+ геттеры и сеттеры
@Entity(name = "brands")
@Table(name = "brands")
public class BrandEntity {
@Id
@Column(name = "brandId")
private Integer brandId;
@Column(name = "brandName")
private String brandName;
public BrandEntity() {
}
Мой класс DAO такой:
public class ProductDAO {
SessionFactory factory = new Configuration().configure("hibernate.cfg.xml").addAnnotatedClass(ProductEntity.class)
.addAnnotatedClass(BrandEntity.class).buildSessionFactory();
public List<ProductEntity> getProductsByBrand(int brandId) {
Session session = factory.getCurrentSession();
session.beginTransaction();
String stmt = "from products where brandId = " + brandId;
List<ProductEntity> productList = session.createQuery(stmt).getResultList();
return productList;
}
}
Может кто-нибудь сказать, что я делаю неправильно