gpt4 book ai didi

spring - 选择顺序在窗口和容器中的工作方式不同

转载 作者:行者123 更新时间:2023-12-05 05:51:13 25 4
gpt4 key购买 nike

我在订购数据库记录时遇到问题。我在 SpringBoot 应用程序中使用 jOOQ 和 DSLContext 从配置的 Oracle 数据库中选择数据。在我的 Windows 设备上本地一切正常。将应用部署到Openshift容器平台后,相同的select orders记录不同。数据库包含斯洛伐克语的文本值,带有重音符号和特殊字符,如您在结果表中所见。

选择:

var companies = DSLContext.select().from(Company.COMPANY)
.orderBy(Company.NAME)
.fetch()
.stream()
.map(this::mapCompany)
.collect(Collectors.toList());

Windows 上的结果:(良好结果)

<表类="s-表"><头>ID名称<正文>1啊啊啊2翻译3Bbbb4"Bcbb"5"Ccccc"

已部署应用的结果:(错误结果)

<表类="s-表"><头>ID名称<正文>1"Bcbb"2"Ccccc"3啊啊啊4翻译5Bbbb

我认为问题是由 Windows 和容器 (unix) 上的不同语言环境或编码引起的。该应用程序正在使用 dockerfile 进行部署。谁能提供一些解决方案,如何在容器中实现与 Windows 中相同的行为?

最佳答案

jOOQ API 支持 collations ,这是指定不同字符集和语言环境排序顺序的 SQL 方式。你可以这样写:

var companies = DSLContext.select().from(Company.COMPANY)
.orderBy(Company.NAME.collate(myCollation))
.fetch(this::mapCompany)

但是,只有在您无法控制数据库排序规则时,这才是真正的好主意。否则,最好在表定义中或在设置数据库时指定它们。有关如何处理排序规则的详细信息,请参阅您的数据库手册。

关于spring - 选择顺序在窗口和容器中的工作方式不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70420467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com