sql >> Database teknologi >  >> RDS >> Mysql

Hibernate @OneToMany kaster MySQLSyntaxErrorException:Du har en fejl i din SQL-syntaks

Du kan ikke vælge en samling i en DTO-projektion som denne:

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

ResultSet er som et regneark, ikke som en graf over objekter.

Det du skal gøre er at ændre din DTO på denne måde:

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

Nu kan du kun passere én telefon ad gangen:

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

Derefter kan du transformere det tabellignende ResutSet til en graf ved hjælp af en Hibernate ResultTransformer .




  1. MySQL IFNULL N/A giver varen kan ikke findes i samlingen Fejl

  2. Hvordan kan jeg kombinere flere rækker til en kommasepareret liste i SQL Server 2005?

  3. Oprettelse af en database i Cloud Sites

  4. Sådan kører du et SQL Plus-script i PowerShell