Spring JPA中如何使用@Query注解查询具有复合主键的实体?

spring jpa中如何使用@query注解查询具有复合主键的实体?

在 spring jpa 中针对复合主键使用 @query 查询

spring jpa 的 @query 注解允许我们编写自定义查询。对于具有复合主键的实体,需要考虑如何引用字段。

例如下面这段代码:

@query("select count(id) from userrecommendedentity where id.userid = :userid and islike = :islike")int countbyuseridandislike(long userid, int islike);

登录后复制

这里,将收到无法解析字段 “id.userid” 的错误。

这是 потому что spring jpa 不会自动解析复合主键的属性。要解决这个问题,需要手动为 unionid 类编写一个转换器:

@converter(autoapply = true)public class unionidconverter implements attributeconverter {    @override    public string converttodatabasecolumn(unionid id) {        return id.getuserid() + "," + id.getrecommendeduserid();    }    @override    public unionid converttoentityattribute(string value) {        string[] split = value.split(",");        return new unionid()            .setuserid(long.valueof(split[0]))            .setrecommendeduserid(long.valueof(split[1]));    }    }

登录后复制

定义转换器后,可以在 @query 中使用 “id” 代替 “id.userid”:

@Query("select count(id) from UserRecommendedEntity where id = :id and isLike = :isLike")int countByUserIdAndIsLike(@Convert(converter = UnionIdConverter.class) Id id, int isLike);

登录后复制

请注意,ide 可能会提示无法解析字段 “id”,但实际代码可以运行。

以上就是Spring JPA中如何使用@Query注解查询具有复合主键的实体?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2608150.html

(0)
上一篇 2025年3月6日 20:35:31
下一篇 2025年3月6日 20:35:39

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论