Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Hibernate @OneToMany wyrzuca MySQLSyntaxErrorException:Wystąpił błąd w składni SQL

Nie możesz wybrać kolekcji w projekcji DTO w następujący sposób:

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

Zestaw wyników jest jak arkusz kalkulacyjny, a nie wykres obiektów.

To, co musisz zrobić, to zmienić swój DTO w następujący sposób:

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

Teraz możesz przekazać tylko jeden telefon na raz:

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) )
) 

Następnie możesz przekształcić ResutSet podobny do tabeli w wykres za pomocą 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. mysqltuner.pl na serwerze Windows 2008 r2

  2. Procedura składowana MySQL z parametrami

  3. Jak pozbyć się błędu MySQL „Przygotowana instrukcja wymaga ponownego przygotowania”

  4. Mysql - LIMIT procentowo?

  5. jak pobrać plik oparty na blob z bazy danych MySQL w PHP?