gpt4 book ai didi

java - Hibernate @OrderBy 用于嵌套属性

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:01:21 27 4
gpt4 key购买 nike

我需要使用@OrderBy(JPA,Hibernate 作为提供者)对嵌套属性的集合进行排序:

@OneToMany(mappedBy = "paramSpec", cascade = CascadeType.ALL)
@OrderBy("release.ordinal")
private List<PkdbParameter> pkdbParams;

在 PkdbParameter.java 中:

...
@ManyToOne
@JoinColumn(name = "release_id")
private Release release;
...

在 Release.java 中:

...
private int ordinal;
...

(所有这些字段都提供了简单的 getter 和 setter)

不幸的是,我遇到了错误:

Caused by: org.hibernate.AnnotationException: property from @OrderBy clause not found: some.package.PkdbParameter.release.ordinal

这段代码有什么问题?如果无法使用嵌套属性表示法,是否还有其他方法可以对 ordinal 属性进行排序?

最佳答案

您可以使用 Hibernate @SortComparator 注释:

像这样:

@OneToMany(mappedBy = "paramSpec", cascade = CascadeType.ALL)
@SortComparator(ReleaseComparator.class)
private List<PkdbParameter> pkdbParams;

CameraNameComparator 在哪里:

public class ReleaseComparator implements Comparator<PkdbParameter> {
@Override
public int compare(PkdbParameter o1, PkdbParameter o2) {
return o1.getRelease().getOrdinal().compareTo( o2.getRelease().getOrdinal() );
}
}

关于java - Hibernate @OrderBy 用于嵌套属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10518216/

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