Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CustomerRepo.java
- public interface CustomerRepo extends CrudRepository<Customer, Integer> {
- public Customer findByPerson(Person person);
- // 4. All customers who bought a particular product.
- @Query(value = "select distinct customers.id from orders join customers on customer_id = customers.id join order_item on order_id = orders.id where product_id = :productId", nativeQuery = true)
- public Iterable<Customer> findByProduct(@Param("product_id") int productId);
- }
- GeneralService.java
- @Service
- public class GeneralService {
- @Autowired
- private CustomerRepo customerRepo;
- public void selectData(){
- Product bread = productRepo.findByName("Bread");
- Product bycicle = productRepo.findByName("Bycicle");
- // 4. All customers who bought a particular product.
- Iterable<Customer> customersWhoBoughtBycicle = customerRepo.findByProduct(bycicle.getId());
- System.out.println("4. All customers who bought a particular product.");
- System.out.println(customersWhoBoughtBycicle.toString());
- System.out.println("================");
- }
- }
- Traceback
- 2020-11-23 16:48:58.866 WARN 28198 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 0, SQLState: 42703
- 2020-11-23 16:48:58.866 ERROR 28198 --- [ main] o.h.engine.jdbc.spi.SqlExceptionHelper : The column name discount was not found in this ResultSet.
- Exception in thread "main" org.springframework.dao.InvalidDataAccessResourceUsageException: could not execute query; SQL [select distinct customers.id from orders join customers on customer_id = customers.id join order_item on order_id = orders.id where product_id = ?]; nested exception is org.hibernate.exception.SQLGrammarException: could not execute query
- at org.springframework.orm.jpa.vendor.HibernateJpaDialect.convertHibernateAccessException(HibernateJpaDialect.java:259)
- at org.springframework.orm.jpa.vendor.HibernateJpaDialect.translateExceptionIfPossible(HibernateJpaDialect.java:233)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.translateExceptionIfPossible(AbstractEntityManagerFactoryBean.java:548)
- at org.springframework.dao.support.ChainedPersistenceExceptionTranslator.translateExceptionIfPossible(ChainedPersistenceExceptionTranslator.java:61)
- at org.springframework.dao.support.DataAccessUtils.translateIfNecessary(DataAccessUtils.java:242)
- at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:152)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
- at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
- at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
- at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
- at com.sun.proxy.$Proxy105.findByProduct(Unknown Source)
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.base/java.lang.reflect.Method.invoke(Method.java:566)
- at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
- at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
- at com.sun.proxy.$Proxy58.findByProduct(Unknown Source)
- at com.example.shop.service.GeneralService.selectData(GeneralService.java:121)
- at com.example.shop.CustomerOrderApplication.main(CustomerOrderApplication.java:15)
- Caused by: org.hibernate.exception.SQLGrammarException: could not execute query
- at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:103)
- at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
- at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:113)
- at org.hibernate.loader.Loader.doList(Loader.java:2853)
- at org.hibernate.loader.Loader.doList(Loader.java:2832)
- at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2664)
- at org.hibernate.loader.Loader.list(Loader.java:2659)
- at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:338)
- at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:2141)
- at org.hibernate.internal.AbstractSharedSessionContract.list(AbstractSharedSessionContract.java:1163)
- at org.hibernate.query.internal.NativeQueryImpl.doList(NativeQueryImpl.java:173)
- at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1533)
- at org.hibernate.query.Query.getResultList(Query.java:165)
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.base/java.lang.reflect.Method.invoke(Method.java:566)
- at org.springframework.orm.jpa.SharedEntityManagerCreator$DeferredQueryInvocationHandler.invoke(SharedEntityManagerCreator.java:406)
- at com.sun.proxy.$Proxy110.getResultList(Unknown Source)
- at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:126)
- at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:88)
- at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:155)
- at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:143)
- at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137)
- at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121)
- at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:152)
- at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:131)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
- at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:371)
- at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:134)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
- at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:137)
- ... 16 more
- Caused by: org.postgresql.util.PSQLException: The column name discount was not found in this ResultSet.
- at org.postgresql.jdbc.PgResultSet.findColumn(PgResultSet.java:2748)
- at org.postgresql.jdbc.PgResultSet.getInt(PgResultSet.java:2626)
- at com.zaxxer.hikari.pool.HikariProxyResultSet.getInt(HikariProxyResultSet.java)
- at org.hibernate.type.descriptor.sql.IntegerTypeDescriptor$2.doExtract(IntegerTypeDescriptor.java:62)
- at org.hibernate.type.descriptor.sql.BasicExtractor.extract(BasicExtractor.java:47)
- at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:257)
- at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:253)
- at org.hibernate.type.AbstractStandardBasicType.nullSafeGet(AbstractStandardBasicType.java:243)
- at org.hibernate.type.AbstractStandardBasicType.hydrate(AbstractStandardBasicType.java:329)
- at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:3087)
- at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1870)
- at org.hibernate.loader.Loader.hydrateEntityState(Loader.java:1798)
- at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1771)
- at org.hibernate.loader.Loader.getRow(Loader.java:1623)
- at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:740)
- at org.hibernate.loader.Loader.getRowsFromResultSet(Loader.java:1039)
- at org.hibernate.loader.Loader.processResultSet(Loader.java:990)
- at org.hibernate.loader.Loader.doQuery(Loader.java:959)
- at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)
- at org.hibernate.loader.Loader.doList(Loader.java:2850)
- ... 44 more
- PostgreSQL
- customer_order=# \dt
- List of relations
- Schema | Name | Type | Owner
- --------+----------------------+-------+----------------
- public | customers | table | customer_order
- public | order_item | table | customer_order
- public | orders | table | customer_order
- public | person | table | customer_order
- public | product | table | customer_order
- public | product__product_set | table | customer_order
- public | product_set | table | customer_order
- (7 rows)
- customer_order=# select distinct customers.id from orders join customers on customer_id = customers.id join order_item on order_id = orders.id where product_id = 3;
- id
- ----
- 3
- (1 row)
Advertisement
Add Comment
Please, Sign In to add comment