sql >> データベース >  >> RDS >> Mysql

Hibernate @OneToManyがMySQLSyntaxErrorExceptionをスローします:SQL構文にエラーがあります

    次のようなDTOプロジェクションでコレクションを選択することはできません:

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

    ResultSetは、オブジェクトのグラフではなく、スプレッドシートのようなものです。

    あなたがする必要があるのは、次のようにDTOを変更することです:

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

    現在、一度に渡すことができる電話は1つだけです:

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

    次に、Hibernate ResultTransformer




    1. リソース、トピック、および章について、正規化されたDBでGROUPBYを使用して結合する

    2. NO_BACKSLASH_ESCAPESオプションが有効になっている場合に、リテラルのパーセント記号をエスケープするにはどうすればよいですか?

    3. 一度に複数のネイティブクエリを実行する

    4. Spring 3 MVC + MySQL:€文字を保存できません