Spring-загрузка jpa-запроса с ошибкой синтаксиса SQL @manyToMany - PullRequest
0 голосов
/ 04 июля 2018

Я довольно новичок в программировании и имею довольно сложную проблему. Я надеялся, что кто-то знает, как исправить следующее:

У меня есть проект с начальной загрузкой, соединяющий java с базой данных MySQL через JPA / hibernate. Это работает как успокоительный API, и я в основном использовал аннотации.

В MySQL таблица «контактов» (помимо прочего) связана с «проектами» через таблицу соединений («CONT_PROJ») и связана с «связями» через таблицу соединений «CONT $ COMPETENCECENTER». (пожалуйста, постарайтесь игнорировать тот факт, что первичный ключ является двойным, это уже было так в базе данных, с которой я должен работать и не могу изменить)

В коде java я сделал @ManyToMany связанным с HashSet проектов (один человек может иметь несколько проектов, и несколько человек могут быть в одном проекте), тогда как люди могут быть только в 1 группе (для этого я использовал @ ManyToOne)

Это мой контактный объект:

@Entity
@Table(name = "contacts")
@JsonInclude(Include.NON_DEFAULT)
public class Contact implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private double k_Contact; 

@NotNull
private String name;

// There are several other variables here

@ManyToMany
@JoinTable(
        name = "PROJ_CONT",
        joinColumns = @JoinColumn(name = "K_CONTACT", referencedColumnName="K_CONTACT"),
        inverseJoinColumns = @JoinColumn(name = "K_PROJECT", referencedColumnName="K_PROJECT"))
    private Set<Project> projects = new HashSet<>();

@ManyToOne  
@JoinTable(
        name = "CONT$COMPETENCECENTER",
        joinColumns = @JoinColumn(name = "K_CONTACT", referencedColumnName="K_CONTACT"),
        inverseJoinColumns = @JoinColumn(name = "F_COCE_MAIN", referencedColumnName="K_CONT_MEDE_COCE"))
    private Coce coce; 

public Contact() {
}

public Contact(double k_Contact) {
    this.k_Contact = k_Contact;
}

public Contact(double k_Contact, String name, String firstName, String email1, Byte[] picture) {
    this.k_Contact = k_Contact;
    this.name = name;
    this.firstName = firstName;
    this.email1 = email1;
    this.picture = picture;
}

public Contact(double k_Contact, String name, String firstName, String email1, Byte[] picture, Coce coce, Set<Project> projects) {
    this.k_Contact = k_Contact;
    this.name = name;
    this.firstName = firstName;
    this.email1 = email1;
    this.picture = picture;
    this.coce = coce;
    this.projects = projects;
}
// plus getters and setters
}

Другие сущности очень простые (на данный момент @ManyToMany и @ManyToOne однонаправлены. Присутствуют геттеры и сеттеры.

Это проект:

@Entity
@Table(name = "projects")
@JsonInclude(Include.NON_DEFAULT)
public class Project implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private double k_Project;

@NotNull
private String name;

@NotNull
private LocalDateTime d_Start;

@NotNull
private LocalDateTime d_End;

public Project() {
}

public Project(double K_PROJECT, String NAME) {
    this.k_Project = K_PROJECT;
    this.name = NAME;
}}

И Коц:

@Entity
@Table(name = "LK_CONT_MEDE_COCE")
@JsonInclude(Include.NON_NULL)
public class Coce implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private double k_Cont_Mede_Coce;

@NotNull
private String competence_Cente;

@NotNull
private String unipartners;

public Coce() {
}

public Coce(double k_Cont_Mede_Coce, String competence_Cente, String unipartners) {
    this.k_Cont_Mede_Coce = k_Cont_Mede_Coce;
    this.competence_Cente = competence_Cente;
    this.unipartners = unipartners;
}}

Мне нужны только несколько переменных (вот почему я не могу выбрать все). Я также подумал, что не должен писать обширный запрос с внутренними объединениями, поэтому я не стал (и это работает для большинства запросов, кроме переменных List).

Это соответствующая часть ContactRepository:

public interface ContactRepository extends JpaRepository<Contact, Double> {
@Query("select c.k_Contact, c.name, c.firstName, c.email1, c.picture, c.coce, c.project from Contact c where c.k_Contact is :id")
Optional<Contact> findContactById(@Param("id") Double id);
}

Я получаю следующую ошибку, но только при попытке добавить c.projects:

MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as col_6_0_, coce1_.k_Cont_Mede_Coce as k_Cont_M1_3_0_, project3_.k_Project as k' at line 1

Когда я выполняю метод findAll для контактов, он также правильно выдает всю информацию, включая проекты (поэтому @ManyToMany работает). Я не могу использовать это, хотя, потому что производительность будет очень плохой.

Я думаю, что это тот способ, которым я запрашиваю «проекты» (который является списком), потому что Coce (единственный результат, @ManyToOne), работает отлично и возвращает правильный объект без каких-либо проблем.

Я надеюсь, что в запросе я допускаю простую ошибку.

Если есть что-то важное, что я должен добавить сюда, пожалуйста, дайте мне знать. Заранее спасибо!

РЕДАКТИРОВАТЬ: приложение работает, ошибка SQL возникает, только когда я пытаюсь получить доступ к конкретным данным во время выполнения. Как и было сказано, вот полная ошибка, я не добавил ее, потому что она была довольно длинной:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы узнать правильный синтаксис для использования рядом с 'как col_6_0_, coce1_.k_Cont_Mede_Coce как k_Cont_M1_3_0_, project3_.k_Project как k' в строке 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0 (собственный метод) ~ [na: 1.8.0_161] at sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62) ~ [na: 1.8.0_161] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45) ~ [na: 1.8.0_161] в java.lang.reflect.Constructor.newInstance (Constructor.java:423) ~ [na: 1.8.0_161] в com.mysql.jdbc.Util.handleNewInstance (Util.java:425) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.Util.getInstance (Util.java:408) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.SQLError.createSQLException (SQLError.java:944) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3976) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.MysqlIO.checkErrorPacket (MysqlIO.java:3912) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.MysqlIO.sendCommand (MysqlIO.java:2530) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.MysqlIO.sqlQueryDirect (MysqlIO.java:2683) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.ConnectionImpl.execSQL (ConnectionImpl.java:2486) ~ [mysql-connector-java-5.1.46.jar: 5.1.46]в com.mysql.jdbc.PreparedStatement.executeInternal (PreparedStatement.java:1858) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] в com.mysql.jdbc.PreparedStatement.executeQuery (PreparedStatement.java:1966) ~ [mysql-connector-java-5.1.46.jar: 5.1.46] at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeQuery (ProxyPreparedStatement.java:52) ~ [HikariCP-2.7.8.jar: na] at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeQuery (HikariProxyPreparedStatement.java) ~ [HikariCP-2.7.8.jar: na] at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract (ResultSetReturnImpl.java:60) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.getResultSet (Loader.java:2168) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1931) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.executeQueryStatement (Loader.java:1893) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.doQuery (Loader.java:938) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections (Loader.java:341) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.doList (Loader.java:2692) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.doList (Loader.java:2675) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.listIgnoreQueryCache (Loader.java:2507) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.Loader.list (Loader.java:2502) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.loader.hql.QueryLoader.list (QueryLoader.java:502) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list (QueryTranslatorImpl.java:392) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.engine.query.spi.HQLQueryPlan.performList (HQLQueryPlan.java:216) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.internal.SessionImpl.list (SessionImpl.java:1489) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.query.internal.AbstractProducedQuery.doList (AbstractProducedQuery.java:1445) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.query.internal.AbstractProducedQuery.list (AbstractProducedQuery.java:1414) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.hibernate.query.internal.AbstractProducedQuery.getSingleResult (AbstractProducedQuery.java:1463) ~ [hibernate-core-5.2.16.Final.jar: 5.2.16.Final] в org.springframework.data.jpa.repository.query.JpaQueryExecution $ SingleEntityExecution.doExecute (JpaQueryExecution.java:214) ~ [spring-data-jpa-2.0.6.RELEASE.jar: 2.0.6.RELEASE] в org.springframework.data.jpa.repository.query.JpaQueryExecution.execute (JpaQueryExecution.java:91) ~ [spring-data-jpa-2.0.6.RELEASE.jar: 2.0.6.RELEASE] в org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute (AbstractJpaQuery.java:136) ~ [spring-data-jpa-2.0.6.RELEASE.jar: 2.0.6.RELEASE] at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute (AbstractJpaQuery.java:125) ~ [spring-data-jpa-2.0.6.RELEASE.jar: 2.0.6.RELEASE] в org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.doInvoke (RepositoryFactorySupport.java:590) ~ [spring-data-commons-2.0.6.RELEASE.jar: 2.0.6.R at org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke (RepositoryFactorySupport.java:578) ~ [spring-data-commons-2.0.6.RELEASE.jar: 2.0.6.REL в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE]at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke (DefaultMethodInvokingMethodInterceptor.java:59) ~ [spring-data-commons-2.0.6.RELEASE.jar: 2.0.6.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction (TransactionAspectSupport.java:294) ~ [spring-tx-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:98) ~ [spring-tx-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor.java:139) ~ [spring-tx-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor $ CrudMethodMetadataPopulationMethodInterceptor.invoke (CrudMethodMetadataPostProcessor.java:1EL. data.R.6.E.6.E.JE.0.EE.6.E.JE.0.EE.6.E.S. в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke (ExposeInvocationInterceptor.java:92) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke (SurroundingTransactionDetectorMethodInterceptor.java:61) ~ [spring-data-commons-2.0.6.RELEASE.jELE: 2.0.6.Rease.RAR: 2.0.6. в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.aop.framework.JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:212) ~ [spring-aop-5.0.5.RELEASE.jar: 5.0.5.RELEASE] на com.sun.proxy. $ Proxy104.findContactById (неизвестный источник) ~ [na: na] в org.unipartners.services.ContactServiceImpl.findContactById (ContactServiceImpl.java:25) ~ [classes /: na] at org.unipartners.web.AppController.findContactById (AppController.java:67) ~ [classes /: na] at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161] at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) ~ [na: 1.8.0_161] at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) ~ [na: 1.8.0_161] at java.lang.reflect.Method.invoke (Method.java:498) ~ [na: 1.8.0_161] в org.springframework.web.method.support.InvocableHandlerMethod.doInvoke (InvocableHandlerMethod.java:209) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest (InvocableHandlerMethod.java:136) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle (ServletInvocableHandlerMethod.java:102) ~ [spring-webmvc-5.0.5.RELEASE.jELE: 5.0.5.Re. at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod (RequestMappingHandlerAdapter.java:877) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE]at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal (RequestMappingHandlerAdapter.java:783) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle (AbstractHandlerMethodAdapter.java:87) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.web.servlet.DispatcherServlet.doDispatch (DispatcherServlet.java:991) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.web.servlet.DispatcherServlet.doService (DispatcherServlet.java:925) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.web.servlet.FrameworkServlet.processRequest (FrameworkServlet.java:974) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.springframework.web.servlet.FrameworkServlet.doGet (FrameworkServlet.java:866) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в javax.servlet.http.HttpServlet.service (HttpServlet.java:635) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.springframework.web.servlet.FrameworkServlet.service (FrameworkServlet.java:851) ~ [spring-webmvc-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в javax.servlet.http.HttpServlet.service (HttpServlet.java:742) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:231) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.tomcat.websocket.server.WsFilter.doFilter (WsFilter.java:52) ~ [tomcat-embed-websocket-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.springframework.web.filter.RequestContextFilter.doFilterInternal (RequestContextFilter.java:99) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal (HttpPutFormContentFilter.java:109) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal (HiddenHttpMethodFilter.java:81) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal (CharacterEncodingFilter.java:200) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE]at org.springframework.web.filter.OncePerRequestFilter.doFilter (OncePerRequestFilter.java:107) ~ [spring-web-5.0.5.RELEASE.jar: 5.0.5.RELEASE] в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:193) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:166) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:198) ~ [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:96) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.authenticator.AuthenticatorBase.invoke (AuthenticatorBase.java:496) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.StandardHostValve.invoke (StandardHostValve.java:140) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:81) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:87) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.catalina.connector.CoyoteAdapter.service (CoyoteAdapter.java:342) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.coyote.http11.Http11Processor.service (Http11Processor.java:803) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.coyote.AbstractProcessorLight.process (AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.coyote.AbstractProtocol $ ConnectionHandler.process (AbstractProtocol.java:790) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun (NioEndpoint.java:1459) [tomcat-embed-core-8.5.29.jar: 8.5.29] в org.apache.tomcat.util.net.SocketProcessorBase.run (SocketProcessorBase.java:49) [tomcat-embed-core-8.5.29.jar: 8.5.29] в java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1149) [na: 1.8.0_161] в java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:624) [na: 1.8.0_161] в org.apache.tomcat.util.threads.TaskThread $ WrappingRunnable.run (TaskThread.java:61) [tomcat-embed-core-8.5.29.jar: 8.5.29] at java.lang.Thread.run (Thread.java:748) [na: 1.8.0_161]

Ответы [ 2 ]

0 голосов
/ 04 июля 2018

Вы не можете выполнять JPQL, как c.coce, c.project , когда они являются другим объектом. Вы можете сделать следующее

@Query("SELECT c FROM Contact c LEFT JOIN FETCH c.projects as pj WHERE c.k_Contact is :id")
Optional<Contact> findById(@Param("id") Double id);
0 голосов
/ 04 июля 2018

попробуйте добавить в класс Project

@ManyToMany(fetch = FetchType.LAZY, mappedBy = "projects")
private Set<Contact> contacts = new HashSet<Contact>();

Мой рабочий пример

@Entity
public class Role {

    @Id
    @Column(name = "id", unique = true, nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;

    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(joinColumns = @JoinColumn(name = "role_id"), inverseJoinColumns = @JoinColumn(name = "user_id"))
    private Set<User> users = new HashSet<>();

    [getter / setter]

}


@Entity
public class User {

    @Id
    @Column(name = "id", unique = true, nullable = false)
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "users")
    @JsonIgnore
    private Set<Role> userRole = new HashSet<>();

    [getter / setter]

}
...