在表中是一个pk,uuid存储为二进制(16)。
我可以使用普通的sql检索十六进制:
从tbl中选择hex(UUID)作为uuid;
但是jooq等价物不知道十六进制函数。
Result<Record1<byte[]>> result = ctx
.select(tbl.UUID)
.from(tbl)
.fetch();
Casting to String给出了java对象的id。
有什么想法吗?
Result<Record1<byte[]>> result = ctx
.select(tbl.UUID.cast(String.class))
.from(tbl)
.fetch();
使用ip(ipv4,ipv6)的相同问题:
选择inet_ntoa(conv(hex(IP),16,10))作为来自tbl的ip;
答案 0 :(得分:1)
jOOQ不支持开箱即用的所有特定于供应商的功能。每当您缺少这样的功能时,您可以使用plain SQL:
自行创建public class DSLExtensions {
public static Field<String> hex(Field<byte[]> field) {
return DSL.field("hex({0})", String.class, field);
}
}
这显然适用于您的其他功能,例如inet_ntoa()
和conv()
答案 1 :(得分:0)
@Lukas Eder,您可以进一步简化。
date_default_timezone_set("America/New York");