Hibernate条件order by具有两列

Hibernate条件order by具有两列,hibernate,hibernate-criteria,Hibernate,Hibernate Criteria,我有一张有温诺和弗拉诺的桌子 WingNo FlatNo A 001 A 002 B 1 A 101 等 我需要在Asc订单中通过WingNo&FlatNo订购。其中WingNo和FlatNo都是字符串。 结果应该是: WingNo FlatNo A 001 A 002 A

我有一张有温诺和弗拉诺的桌子

WingNo          FlatNo
A                001
A                002
B                1
A                101

我需要在Asc订单中通过WingNo&FlatNo订购。其中WingNo和FlatNo都是字符串。 结果应该是:

WingNo         FlatNo
A               001
A               002
A               101
B               1


criteria.addOrder(Order.asc("wingNo"));
criteria.addOrder(Order.asc("flatNo"));

如何使用order by,并将字符串字段视为数字?

如果
FlatNo
字段是数据库表中的固定宽度文本或varchar字段,则当前的排序逻辑应该已经为您提供了所需的行为。这是因为零填充的固定宽度数字字符串按照与基础数字相同的字典顺序排序


如果
FlatNo
列没有固定的宽度和/或可能缺少左零填充,那么您必须做更多的工作。如果您有这种长期需求,那么将
FlatNo
设置为数字列可能会更容易