Как сделать POJO-проекцию в весенние данные jpa для нативного запроса - PullRequest
0 голосов
/ 22 января 2020

У меня следующий запрос MySQL. Я пробовал проекцию интерфейса в данных весны jpa, но идентификатор поля проекции UUID. Так что это не отображается в проекции интерфейса. Поэтому я хочу попробовать проекцию POJO, но она не работает.

SELECT 
    f.receiver_user_id, f.modified_at, f.text
FROM
    (SELECT 
        receiver_user_id, MAX(modified_at) AS modified_at
    FROM
        text_log
    GROUP BY receiver_user_id) AS x
        INNER JOIN
    text_log AS f ON f.receiver_user_id = x.receiver_user_id
        AND f.modified_at = x.modified_at
ORDER BY f.modified_at DESC;

Также было бы полезно, если бы было предложено использовать реализацию построителя критериев JPA для вышеуказанного запроса.

Я пытался следующая реализация запроса данных хранилища данных JPA

@Query(value = "SELECT " + 
            "f.receiver_user_id as receiverUserId, f.modified_at as modifiedAt, f.text as text" + 
            "FROM " + 
            "    (SELECT  " + 
            "        receiver_user_id, MAX(modified_at) AS modified_at " + 
            "    FROM " + 
            "        text_log " + 
            "    GROUP BY receiver_user_id) AS x " + 
            "        INNER JOIN " + 
            "    text_log AS f ON f.receiver_user_id = x.receiver_user_id " + 
            "        AND f.modified_at = x.modified_at " + 
            "ORDER BY f.modified_at DESC limit ?1  offset ?2 ", 
            nativeQuery = true)
    List<ITextLog> findTextLog(int l , int f);

    public interface ITextLog {

            public UUID getReceiverUserId();

            public Date getModifiedAt();

            public String getText();

    }

1 Ответ

0 голосов
/ 23 января 2020

На основании этих ответов: Возможно, вы можете использовать это

@org.hibernate.annotations.Type(type="org.hibernate.type.UUIDCharType")
public UUID getReceiverUserId();

Или

@org.hibernate.annotations.Type(type="uuid-char")
public UUID getReceiverUserId();
...