在我的示例中,持久化对象包含一组项目。 我现在想要从数据库中检索此集合,以便根据属性(这是一个枚举,但不是“Item”的ID)对项目进行排序。
@OneToMany(cascade=CascadeType.ALL)
private List<Item> items;
我可以使用@OrderBy
,如下所示:
@OneToMany(cascade=CascadeType.ALL)
@OrderBy("propertyOfItem")
private List<Item> items;
但是,我真的不喜欢在程序中使用硬编码字符串。我设法通过使用(自动生成的)元模型来引用字段来解决我的其他问题。现在我想要一个类似的解决方案,也可以根据我的规范对数据库进行排序。
如何在不必对字符串“propertyOfItem”进行硬编码的情况下获取上面显示的代码的行为?
编辑以澄清我的意图(尽管你可能在不理解这些问题的情况下回答这个问题):我想要重新命名字段或使我的代码无法编译,或者(通过在Eclipse中实现相应的聪明)更新{ {1}}相应的等价物。当我尝试基于不再存在的字段/列进行排序时,我不希望我的代码编译和运行并且无声地失败。我通过使用自动生成的元模型解决了类似的问题(即,我可以构建每当我重命名其中引用的字段时自动更新的查询)。现在我想要一个类似的,干净的解决方案来解决这里描述的问题。