当前位置: 首页 > 知识库问答 >
问题:

如何在spring data jpa中进行POJO投影以实现原生查询

叶阳
2023-03-14

我有以下MySQL查询。我尝试了spring data jpa中的接口投影,但是投影字段id是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;

@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个答案

阎成天
2023-03-14

基于这个答案:也许你可以用这个

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

@org.hibernate.annotations.Type(type="uuid-char")
public UUID getReceiverUserId();
 类似资料:
  • 我有两个表,用户和角色,它们是多对多的 我正在使用EntityManager进行查询。 我如何使JPA知道映射一个用户和多个角色?

  • 我是Android Studio的新手,所以我面临一些问题。我正在寻找一种如何干净地项目的方法。 在Eclipse中,我会做<代码>项目-

  • 问题内容: 简而言之:hibernate状态不支持投影和示例查询吗?我发现了这篇文章: 代码是这样的: 就像其他张贴者所说的那样,生成的sql始终具有一个where类,仅 引用y0_ =? 而不是this_.city。 我已经尝试了几种方法,并搜索了问题跟踪器,但对此一无所获。 我什至尝试使用Projection别名和Transformers,但是它不起作用: 有没有人通过示例使用投影和查询? 问

  • 只需面对N 1查询问题与这样的Spring数据存储库 我在日志中看到这样一个查询 Hibernate:选择todo0\u0。id为col_0_0_从todos todo0_其中todo0_。用户标识=?] 和N个这样的查询 Hibernate:选择todo0\u0。id为id1\u 0\u 0\u,todo0\u。描述为描述2\u 0\u 0\u,todo0\u。目标日期为目标日期第3天、第0天、

  • 我在我的项目中使用了JPA和hibernate。 我的pojo类是AggregateDetail,它包含我将从本机查询获得的所有20个变量。 有没有办法实现这个。

  • 选择一个对象或组(或在“图层”面板中定位一个图层)。 选择“效果”>“风格化”>“投影”。 设置投影的选项,并单击“确定”。 模式 指定投影的混合模式。 不透明度 指定所需的投影不透明度百分比。 X 位移和 Y 位移 指定希望投影偏离对象的距离。 模糊 指定要进行模糊处理之处距离阴影边缘的距离。Illustrator 会创建一个透明栅格对象来模拟模糊效果。 颜色 指定阴影的颜色。 暗度 指定希望为