sql >> Databáze >  >> RDS >> Mysql

Hibernate @OneToMany vyvolá výjimku MySQLSyntaxErrorException:Máte chybu v syntaxi SQL

V projekci DTO nemůžete vybrat kolekci, jako je tato:

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

ResultSet je jako tabulka, ne jako graf objektů.

Co musíte udělat, je změnit své DTO takto:

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

Nyní můžete předat pouze jeden telefon najednou:

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

Poté můžete tabulkový ResutSet převést na graf pomocí Hibernate ResultTransformer .




  1. Generujte příkazy CREATE pro všechny tabulky MySql

  2. Nelze nainstalovat klenot mysql2 na macOS Sierra

  3. vyhledávání z více tabulek pomocí jednoho klíčového slova v mysql

  4. Zobrazte hodnoty polí tabulky Mysql v poli Vybrat