我正在将一个java应用程序移植到jooq。
目前,我有单独的sql类来支持MySQL、MariaDB和H2。
我将不同的UUID
类型存储在每种类型中,因为它们具有不同的支持。Maria & H2有UUID数据类型。MySQL没有,所以我自己使用了BINARY(16)
并转换到/从UUID
我不知道如何才能最好地处理这件事。jooq有一个UUID类型,但是对于MySQL,它创建一个VARCHAR(36)
。
create.createTableIfNotExists("users")
.column("user_uuid", SQLDataType.UUID.notNull())
.execute();
我是否可以对mysql进行修改,以便在查询时使用二进制16和UUID_TO_BIN
函数?
还是我需要只为mysql创建一份使用SQLDataType.BINARY
的代码副本?
对我来说接受varchar也许是值得的。这个表可能有100 k记录,因此二进制16的文件大小比varchar 36要小,但这意味着每次触摸该列时,我都需要重写jooq。
发布于 2022-07-29 07:14:37
如果这值得在每个方言的基础上进行优化,那么您确实应该对这些数据库产品使用BINARY
,并定义一个具有专用data type Binding
的表,该表可以在每个方言的基础上处理转换。这样,您就不再需要再访问该专栏了,它将是透明的(当然,比较和其他操作符在BINARY
上可能不起作用,这在VARCHAR
上是可行的,但对您来说似乎还可以吗?)
https://stackoverflow.com/questions/73160786
复制相似问题