Форум программистов, компьютерный форум, киберфорум
Java: Spring, Spring Boot
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/64: Рейтинг темы: голосов - 64, средняя оценка - 4.59
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41

Spring. Repository. @Query. Привильно написать запрос

25.01.2017, 21:46. Показов 12808. Ответов 9

Студворк — интернет-сервис помощи студентам
Подчеркивает в @Query Click. В чем может быть ошибка?
Как создавать сложные запросы ?

ClickRepository

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import com.qoobico.remindme.server.entity.Click;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
 
 
public interface ClickRepository extends JpaRepository<Click, Long>, JpaSpecificationExecutor<Click> {
 
 
   /**@Query("select Businesscentr.email from Businesscentr as b, Click as c, Businessbanner as bb, Bannners as ba where 
c.fullname_client = : fullnameClient AND ba.id_banner = : id AND ba.id_banner = bb.id_banner AND bb.id_bc = b.id_bc ") */
 
    @Query("SELECT c.fullname_client FROM Click c WHERE c.id_bannners = :idbanners AND c.fullname_client = :fullnameClient")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
 
}



org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'clickController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCr eationException: Could not autowire field: private com.qoobico.remindme.server.service.Clic kService com.qoobico.remindme.server.controller.C lickController.service; nested exception is org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'clickServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCr eationException: Could not autowire field: private com.qoobico.remindme.server.repository.C lickRepository com.qoobico.remindme.server.service.Clic kServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCr eationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalStateException: Using named parameters for method public abstract java.lang.String com.qoobico.remindme.server.repository.C lickRepository.sent(java.lang.String,lon g) but parameter 'fullname_client' not found in annotated query 'SELECT c.fullname_client FROM Click c WHERE c.id_bannners = :idbanners AND c.fullname_client = :fullnameClient'!
Вложения
Тип файла: txt error.txt (15.3 Кб, 0 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.01.2017, 21:46
Ответы с готовыми решениями:

Выборка данных из нескольких таблиц используя Spring Data JPA Repository и преобразование в json
Всем привет! Сейчас мне данные отдаются в таком виде: Эти данные берутся из одной таблицы public_organisations. Но есть...

[Spring Data] Не работает кастомная Query
Ошибка: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'playlistDao': Invocation of init method...

Spring Data custom query error
Добрового времени суток, у меня есть следующий код: public interface CarDao extends CrudRepository&lt;Car, Long&gt;{ @Modifying ...

9
14 / 14 / 16
Регистрация: 02.03.2013
Сообщений: 27
25.01.2017, 21:56
Лучший ответ Сообщение было отмечено new_wave как решение

Решение

Смотрим ошибку:
Цитата Сообщение от new_wave Посмотреть сообщение
parameter 'fullname_client' not found in annotated query
Смотрим запрос и параметры к нему:
Цитата Сообщение от new_wave Посмотреть сообщение
@Query("SELECT c.fullname_client FROM Click c WHERE c.id_bannners = :idbanners AND c.fullname_client = :fullnameClient")
Цитата Сообщение от new_wave Посмотреть сообщение
@Param("fullname_client")
в запросе параметр называется "fullnameClient", а значение подставляется в параметр "fullname_client"
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
26.01.2017, 14:26  [ТС]
Правильно ли понял, что в @Query после символа : мы подставляем @Param("") ?



т.е. будет так

Java
1
2
 @Query("SELECT c.fullname_client FROM Click c WHERE c.id_banners = :id_banner AND c.fullname_client = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
или

Java
1
2
3
 @Query("SELECT c.fullname_client FROM Click c WHERE c.id_banners = :idbanners AND c.fullname_client = :fullnameClient")
 
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
0
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
26.01.2017, 14:36  [ТС]
Click controller, entity, service, repo
Вложения
Тип файла: rar click.rar (2.5 Кб, 3 просмотров)
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
26.01.2017, 14:57
Лучший ответ Сообщение было отмечено new_wave как решение

Решение

первый вариант

Добавлено через 15 секунд
Java
1
2
@Query("SELECT c.fullname_client FROM Click c WHERE c.id_banners = :id_banner AND c.fullname_client = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
26.01.2017, 15:55  [ТС]
Исправил, но в запросе Click подчеркивает красным

Добавлено через 13 минут
Цитата Сообщение от new_wave Посмотреть сообщение
Исправил, но в запросе Click подчеркивает красным
может это как то связано, что в entity Click, id_banners это не тип long, а тип Banners
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@Entity
@Table(name = "click")
public class Click {
    @Id
    @Column(name = "id_click", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idClick;
 
    @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinColumn(name = "id_banners", nullable = false)
    private Banners idbanners;
 
    @Column(name = "fullname_client", nullable = false, length = 50)
    private String fullnameClient;
0
Эксперт Java
378 / 370 / 114
Регистрация: 30.06.2010
Сообщений: 1,445
26.01.2017, 16:23
Лучший ответ Сообщение было отмечено new_wave как решение

Решение

SELECT c.fullname_client FROM Click c join c.idBanners b WHERE b.id = :id_banner AND c.fullname_client = :fullname_client
это если в Banners у тебя поле id
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
26.01.2017, 16:59  [ТС]
Исправил, но Click подчеркивает всеравно

Вот таблица banners
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
@Entity
@Table(name = "banners")
public class Banners {
    @Id
    @Column(name = "id_banner", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idBanner;
 
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "banners")
    private Set<Businessbanner> businessbanners;
 
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "idbanners")
    private Set<Click> clicks;
 
    @Column(name = "text_banner", nullable = false, length = 50)
    private String textBanner;
    @Column(name = "filepath_banner", nullable = false, length = 50)
    private String filepathBanner;
 
 
    public Banners() {}
 
 
    public long getIdBanner() {
        return idBanner;
    }
 
    public void setIdBanner(long idBanner) {
        this.idBanner = idBanner;
    }
 
    public Set<Businessbanner> getBusinessbanners() {
        return businessbanners;
    }
 
    public void setBusinessbanners(Set<Businessbanner> businessbanners) {
        this.businessbanners = businessbanners;
    }
 
    public Set<Click> getClicks() {
        return clicks;
    }
 
    public void setClicks(Set<Click> clicks) {
        this.clicks = clicks;
    }
 
    public String getTextBanner() {
        return textBanner;
    }
 
    public void setTextBanner(String textBanner) {
        this.textBanner = textBanner;
    }
 
    public String getFilepathBanner() {
        return filepathBanner;
    }
 
    public void setFilepathBanner(String filepathBanner) {
        this.filepathBanner = filepathBanner;
    }
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.service.ClickService com.qoobico.remindme.server.controller.ClickController.service; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.repository.ClickRepository com.qoobico.remindme.server.service.ClickServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.qoobico.remindme.server.repository.ClickRepository.sent(java.lang.String,long)!
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:835)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:446)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:328)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4715)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
    at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:482)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:431)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.service.ClickService com.qoobico.remindme.server.controller.ClickController.service; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.repository.ClickRepository com.qoobico.remindme.server.service.ClickServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.qoobico.remindme.server.repository.ClickRepository.sent(java.lang.String,long)!
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:571)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    ... 58 more
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.repository.ClickRepository com.qoobico.remindme.server.service.ClickServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.qoobico.remindme.server.repository.ClickRepository.sent(java.lang.String,long)!
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:334)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:305)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:301)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:196)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:543)
    ... 60 more
Caused by: org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.repository.ClickRepository com.qoobico.remindme.server.service.ClickServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.qoobico.remindme.server.repository.ClickRepository.sent(java.lang.String,long)!
    at org...............
Добавлено через 3 минуты
Click
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@Entity
@Table(name = "click")
public class Click {
    @Id
    @Column(name = "id_click", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idClick;
 
    @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinColumn(name = "id_banners", nullable = false)
    private Banners idbanners;
 
    @Column(name = "fullname_client", nullable = false, length = 50)
    private String fullnameClient;
 
 
    public Click() {}
 
 
    public long getIdClick() {
        return idClick;
    }
 
    public void setIdClick(long idClick) {
        this.idClick = idClick;
    }
 
    public Banners getIdbanners() {
        return idbanners;
    }
 
    public void setIdbanners(Banners idbanners) {
        this.idbanners = idbanners;
    }
 
    public String getFullnameClient() {
        return fullnameClient;
    }
 
    public void setFullnameClient(String fullnameClient) {
        this.fullnameClient = fullnameClient;
    }
}
Добавлено через 3 минуты
join c.id_banners ?
Java
1
2
3
4
5
6
7
8
9
10
public interface ClickRepository extends JpaRepository<Click, Long>, JpaSpecificationExecutor<Click> {
 
   // @Query("SELECT c.fullname_client FROM Click c WHERE c.id_banners = :id_banner AND c.fullname_client = :fullname_client")
 
    @Query("SELECT c.fullname_client FROM Click c join c.idBanners b WHERE b.id_banner = :id_banner AND c.fullname_client = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
 
 
 
}
0
14 / 14 / 16
Регистрация: 02.03.2013
Сообщений: 27
26.01.2017, 20:22
Java
1
2
@Query("SELECT c.fullnameClient FROM Click c join c.idBanners b WHERE b.idBanner = :id_banner AND c.fullnameClient = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
1
2 / 2 / 2
Регистрация: 20.01.2017
Сообщений: 41
27.01.2017, 15:24  [ТС]
Цитата Сообщение от Skelotron Посмотреть сообщение
Java
1
2
@Query("SELECT c.fullnameClient FROM Click c join c.idBanners b WHERE b.idBanner = :id_banner AND c.fullnameClient = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
Почему в SELECT c.fullnameClient ? Click колонка имеет название fullname_client в таблице бд

Добавлено через 15 минут
@Query запрос строится на именованиях таблиц, колонок, ... которые указаны в entity.java, а не в именованиях самой бд?

Добавлено через 16 минут
Java
1
2
3
4
5
6
7
8
@Entity
@Table(name = "banners")
public class Banners {
    @Id
    @Column(name = "id_banner", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idBanner;

Тогда join так изменить ?
Java
1
2
    @Query("SELECT c.fullname_client FROM Click AS c join c.idBanner Banners b WHERE b.id_banner = :id_banner AND c.fullname_client = :fullname_client")
    String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
Добавлено через 6 минут
Тогда join так изменить ?
Java
1
2
@Query("SELECT c.fullname_client FROM Click AS c join c.idBanner Banners b WHERE b.id_banner = :id_banner AND c.fullname_client = :fullname_client")
String sent(@Param("fullname_client") String fullnameClient, @Param("id_banner") long idbanners);
Источник не могу найти, где описано подробно как делать сложные запросы. Подскажите если есть какой то материал. У меня четыре таблицы связаны, получается из двух входных данных по таблице Click надо достать одну колонку из 4ой таблице, и весь процесс поиска колонки проходит по четырем таблицам

Добавлено через 1 час 18 минут
Цитата Сообщение от LeX Посмотреть сообщение
это если в Banners у тебя поле id
Controller
Java
1
2
3
4
5
6
7
8
9
10
11
12
     @Autowired
    private ClickService service;
 
    /*
        i.e. information about fullname_client, id_banner sent to server from client
    */
    @RequestMapping(value = "/sentemail", method = RequestMethod.POST)
    @ResponseBody
    public String sentClick(@RequestParam ("fullnameClient") String fullnameClient,@RequestParam ("idbanners") long idbanners) {
 
        return service.sent(fullnameClient, idbanners);
    }
Repository
Java
1
2
 @Query("SELECT c.fullnameClient FROM Click AS c join c.idbanners Banners b WHERE b.idBanner = :idbanners AND c.fullnameClient = :fullnameClient")
    String sent(@Param("fullnameClient") String fullnameClient, @Param("idbanners") long idbanners);
Entity Click

Java
1
2
3
4
5
6
7
8
9
10
11
12
        @Id
    @Column(name = "id_click", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idClick;
 
    @ManyToOne(fetch = FetchType.EAGER, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
    @JoinColumn(name = "id_banners", nullable = false)
    private Banners idbanners;
 
    @Column(name = "fullname_client", nullable = false, length = 50)
    private String fullnameClient;
Entity Banners
Java
1
2
3
4
5
6
7
8
9
10
11
      @Id
    @Column(name = "id_banner", unique = true, nullable = false)
    @GeneratedValue(generator = "increment")
    @GenericGenerator(name = "increment", strategy = "increment")
    private long idBanner;
 
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "banners")
    private Set<Businessbanner> businessbanners;
 
    @OneToMany(fetch = FetchType.EAGER, mappedBy = "idbanners")
    private Set<Click> clicks;
Java
1
2
3
Error
 
     org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickController': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.service.ClickService com.qoobico.remindme.server.controller.ClickController.service; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickServiceImpl': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.qoobico.remindme.server.repository.ClickRepository com.qoobico.remindme.server.service.ClickServiceImpl.clickRepository; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clickRepository': Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.lang.String com.qoobico.remindme.server.repository.ClickRepository.sent(java.lang.String,long)!
Добавлено через 42 минуты
Заработало
Java
1
2
@Query("SELECT c.fullnameClient FROM Click AS c join c.idbanners b WHERE b.idBanner = :idbanners AND c.fullnameClient = :fullnameClient")
    String sent(@Param("fullnameClient") String fullnameClient, @Param("idbanners") long idbanners);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2017, 15:24
Помогаю со студенческими работами здесь

Запрос Query!!!
Здравствуйте. Помогите пожалуйста. У меня существует база user.db с полями - FIO, User_password, User_Type. При входе в форму...

Запрос Query
Здраствуйте. Вообщем вот такое расположение : http://s57.***********/i157/1103/b1/08e4e9a51c66.jpg procedure...

Query, вложенный запрос
Здраствуйте, я ищу номер рейса автобуса в котором есть остановка А и В, но мне надо еще учитывать направления движения(время остановки(ну...

Запрос в Add Query
Вот сам запрос к БД: SELECT id, ФИО, Пол, Университет, Факультет, Группа, Дата_рождения FROM alphaGroup WHERE (Пол LIKE...

Query, правильно ли составлен запрос?
Правильно ли я составил запрос? public Cursor getTitleDB() { return mDB.query(DB_TABLE, new String{COLUMN_TITLE}, null,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru