spring jpa 如何映射 postgresql 中 range 类型

2020-02-24 16:07:23 +08:00
 aragakiyuii

翻文档没找到,还是说“范围”这种类型没法映射,数据库里只能放俩字段存上下限?

2058 次点击
所在节点    Java
12 条回复
hantsy
2020-02-24 16:17:33 +08:00
自己写一个 Hibernate Type 或都使用 Hibernate Types 项目,https://vladmihalcea.com/map-postgresql-range-column-type-jpa-hibernate/
aragakiyuii
2020-02-24 16:43:59 +08:00
@hantsy #1 这个好用,谢谢
hantsy
2020-02-24 16:50:09 +08:00
或者使用 JPA 2.1 中的标准的 Converter 实现,好处是跨 JPA Providers, 不管是 Hibernate,OpenJPA, EclipseLinks.
https://github.com/hantsy/ee7-sandbox/tree/master/jpa/converter/src/main/java/com/hantsylabs/example/ee7/jpa
optional
2020-02-24 16:51:36 +08:00
然并软, 能 select 出来,但是不能传递到查询条件里去,jpa 只能用用基本特性,稍微复杂点就 GG。
hantsy
2020-02-24 16:51:40 +08:00
这个好像不大适合,不知道默认 Postgresql Range 映射成什么类型。
hantsy
2020-02-24 16:52:26 +08:00
还是要用 Hibernate Types。
hantsy
2020-02-24 16:55:37 +08:00
在 JPA 2.2 添加 Java 8 Datetime 类型支持之前,JPA 2.1 的 Converter 适合用于转换 Java DateTime 之类 JPA 不支持的类型这种场景。
aragakiyuii
2020-02-24 18:09:57 +08:00
@optional #4 这个问题不大,做个映射就行,我这边用别的也得做映射
aragakiyuii
2020-02-24 18:12:57 +08:00
@hantsy #7 嗯,谢谢,我自己实现 userType 做了。Vlad Mihalcea 的 hibernate-types 如果不买他那个 Hypersistence Optimizer 的话,每次启动都会打出来 warnning 和 banner
zepc007
2020-02-25 11:17:25 +08:00
@optional 复杂的话只能自己 @Query 了😂
optional
2020-02-25 11:58:10 +08:00
@zepc007 关键是 @Query 也不一定能搞定(我都不排斥 nativeQuery=true 了),,比如传进去一个 List<Range>作为参数? 或者 List<Pair<Int,String>> 作为 where in 的条件, @Query 就 gg 了。
zepc007
2020-02-25 13:32:15 +08:00
@optional 一会那个叫 Query 的用户就懵逼了,老是艾特他,哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/647127

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX