Mysql
 sql >> база данни >  >> RDS >> Mysql

Hibernate @OneToMany хвърля MySQLSyntaxErrorException:Имате грешка във вашия SQL синтаксис

Не можете да изберете колекция в DTO проекция по следния начин:

SELECT new com.tim.core.dto.client.MinimalContactDTO(c.id, c.version, c.name, c.title, c.email, c.createdDate, **c.phones**)

ResultSet е като електронна таблица, а не като графика на обекти.

Това, което трябва да направите, е да промените вашия DTO по следния начин:

public MinimalContactDTO(
    Long id, Long version, String name, String title, String email, 
    Date createdDate, ContactPhone phone) {
    ...
}

Сега можете да предавате само един телефон наведнъж:

SELECT new com.tim.core.dto.client.MinimalContactDTO(
    c.id, c.version, c.name, c.title, c.email, c.createdDate, p)
from CONTACT c 
JOIN c.phones p
where 
( 
    c.localRecordStatus IS NULL OR 
    c.localRecordStatus IN (:openStatusList) )
) 

След това можете да трансформирате подобен на таблица ResutSet в графика с помощта на Hibernate ResultTransformer .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. как да вмъкна стойности със запетая? в оператор switch

  2. Параметър @Name не е намерен в колекцията

  3. Ако MYSQL не е чувствителен към малки и големи букви, как работи за полето Password в Login?

  4. Грешка 1005 в MySQL (от синтаксис на външния ключ?)

  5. Грешка 1148 MySQL Използваната команда не е разрешена с тази версия на MySQL