sql >> Databasteknik >  >> RDS >> Mysql

Hibernate @OneToMany kastar MySQLSyntaxErrorException:Du har ett fel i din SQL-syntax

Du kan inte välja en samling i en DTO-projektion så här:

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

ResultSet är som ett kalkylblad, inte som en graf över objekt.

Vad du behöver göra är att ändra din DTO så här:

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

Nu kan du bara skicka en telefon åt gången:

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

Sedan kan du förvandla den tabellliknande ResutSet till en graf med hjälp av en Hibernate ResultTransformer .




  1. devnagri (hindi) teckensnitt lagras inte i mysql

  2. Hur trunkerar man tabell i Oracle-proceduren?

  3. MYSQL - Hur man sammanfogar två frågor för att utelämna element som finns i den andra frågan (eller kanske någon bättre lösning?)

  4. MySQL Select senaste 7 dagarna