gpt4 book ai didi

java - Spring JPA : @OrderBy doesn't work when using saveAndFlush

转载 作者:行者123 更新时间:2023-12-02 10:09:25 27 4
gpt4 key购买 nike

我在我的bean上使用@OrderBy子句,当我从持久层获取这个对象时,它工作得很好,但是当我尝试使用

保存这个数据时
persistedObject = saveAndFlush(MyCustomObject);

persistedObject 中的结果未按照 @OrderBy 子句指定的方式排序。

代码片段:

@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, orphanRemoval = true)
@JoinColumn(name = "COLLECTION_ID")
@OrderBy("order ASC")
private Set<MySections> sections;
class MySections {
// Some Properties
@Column(name = "SEQ_NO")
private Integer order;
}

存储库相关代码

// this brings sections ordered by order property
collectionRepository.findById("123");


// Sections in persistedCollection are not ordered
persistedCollection = collectionRepository.saveAndFlush(collection);

最佳答案

这是因为@OrderBy没有直接在数据库中具体化订单。它获取数据并在内存中执行排序。要实现您所描述的目标,您必须使用@OrderColumn。它维护数据库中行的持久顺序。

还有一个建议 - 仅使用 select 查询并不是检查顺序的好选择,因为数据库不能保证结果的顺序。

关于java - Spring JPA : @OrderBy doesn't work when using saveAndFlush,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55115536/

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