sql >> Database >  >> RDS >> Mysql

Hibernate @OneToMany genereert MySQLSyntaxErrorException:er is een fout opgetreden in uw SQL-syntaxis

U kunt een collectie niet selecteren in een DTO-projectie zoals deze:

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

De ResultSet is als een spreadsheet, niet als een grafiek van objecten.

Wat u moet doen, is uw DTO als volgt wijzigen:

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

U kunt nu slechts één telefoon tegelijk doorgeven:

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

Vervolgens kunt u de tabelachtige ResutSet omzetten in een grafiek met behulp van een Hibernate ResultTransformer .




  1. Wanneer een nieuwe rij in de database wordt toegevoegd, moet een extern opdrachtregelprogramma worden aangeroepen

  2. Symfony2, Doctrine2, MySql, tabellen bekijken

  3. Hoe voeg ik een JDBC-stuurprogramma toe aan een Jenkins-pijplijn?

  4. Hoe de LEFT()-functie werkt in SQL Server (T-SQL)