Java 使用hibernate进行排序

Java 使用hibernate进行排序,java,spring,hibernate,sorting,Java,Spring,Hibernate,Sorting,我不得不问你一个关于使用hibernate进行排序的问题,因为我完全不知道如何解决我的问题,因为现在我在这个项目上,这个项目已经实现了很多问题,我知道我正站在其中一个问题上 我有这三个模型课 第一个是文档,第二个是CustomProperty,最后一个是CustomPropertyDefinition @Indexed @Table(name = "documents") @EntityListeners({ AuditingEntityListener.class }) @

我不得不问你一个关于使用hibernate进行排序的问题,因为我完全不知道如何解决我的问题,因为现在我在这个项目上,这个项目已经实现了很多问题,我知道我正站在其中一个问题上

我有这三个模型课

第一个是文档,第二个是CustomProperty,最后一个是CustomPropertyDefinition

@Indexed
@Table(name = "documents")
@EntityListeners({ AuditingEntityListener.class })
@JsonIgnoreProperties(value = { "isLogicallyDeleted", "textContent", })
public class Document {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "id", length = 40)
    private String id;

    @Field
    @Column(name = "title", nullable = false)
    private String title;

    @Field
    @Column(name = "mimetype", nullable = false)
    private String mimetype;

    @Field
    @Column(name = "creator")
    private String creator;

    @Temporal(TemporalType.TIMESTAMP)
    @CreatedDate
    @Column(name = "created")
    private Date created;

    @Field
    @Column(name = "modifier")
    private String modifier;

    @Temporal(TemporalType.TIMESTAMP)
    @LastModifiedDate
    @Column(name = "modified")
    private Date modified;

    @Field
    @Column(name = "folder_id", length = 40)
    private String folderId;

    @Column(name = "Ordering")
    private Date ordering;

    @Column(name = "definition_id", length = 40)
    private String definitionId;

    @OneToMany(mappedBy = "parentDocument", cascade = CascadeType.ALL, orphanRemoval = true)
    @JsonManagedReference
    private Set<CustomProperty> customProperties = new HashSet<CustomProperty>();

和CustomProperty定义:

@Entity
@Table(name = "custom_property_definitions")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "definitionsUsedIn" })
public class CustomPropertyDefinition {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "id", length = 40)
    private String id;

    @Column(name = "property_type", nullable = false, length = 10)
    private String propertyType;

    @Column(name = "symbolic_name", unique = true, nullable = false)
    private String symbolicName;

    @Column(name = "lower_bound")
    private String lowerBound;

    @Column(name = "upper_bound")
    private String upperBound;

    @ElementCollection
    @CollectionTable(name = "custom_property_definition_allowed_values", joinColumns = @JoinColumn(name = "id"))
    @Cascade(CascadeType.ALL)
    @Column(name = "allowedValue")
    @OrderBy("allowedValue ASC")
    private Set<String> allowedValues;

    @Transient
    private Set<String> allowedValuesToAdd = new HashSet<String>();

    @ManyToMany(mappedBy = "customPropertyDefinitions")
    private Set<DocumentClassDefinition> definitionsUsedIn;

    @ManyToMany(mappedBy = "custPropDefinitions")
    private Set<PropertyFolderStructure> propertyFolderStructure;
@实体
@表(name=“自定义属性定义”)
@JsonIgnoreProperties({“hibernateLazyInitializer”,“definitionsUsedIn”})
公共类CustomPropertyDefinition{
@身份证
@GeneratedValue(generator=“uuid”)
@GenericGenerator(name=“uuid”,strategy=“uuid2”)
@列(name=“id”,长度=40)
私有字符串id;
@列(name=“property\u type”,null=false,长度=10)
私有字符串属性类型;
@列(name=“symbolic_name”,unique=true,nullable=false)
私有字符串符号名;
@列(name=“下限”)
私有字符串下行链路;
@列(name=“上限”)
私有字符串上限;
@元素集合
@CollectionTable(name=“custom\u property\u definition\u allowed\u values”,joinColumns=@JoinColumn(name=“id”))
@级联(级联类型.ALL)
@列(name=“allowedValue”)
@订购人(“allowedValue ASC”)
私有设置允许值;
@短暂的
private Set allowedValuesToAdd=new HashSet();
@ManyToMany(mappedBy=“customPropertyDefinitions”)
使用的私有集定义;
@许多(mappedBy=“custPropDefinitions”)
私有集合属性文件夹结构;
我使用分页返回文档,但我需要按“CustomPropertyDefinition”->symbolicName的属性对文档“CustomProperty”的属性进行排序。您知道如何排序吗


非常感谢!给我的每个建议都很好!

customProperties
是一个
Set
并且
Set
没有顺序。我知道Set没有顺序,但我已经将其保存在数据库中,所以我想知道hibernate是否提供了一些方法,如何按照对象的第二个子对象对对象进行排序,或者如何说。
CustomProperty
没有对
CustomPropertyDefinition
的引用,那么您想如何对其排序?对不起,这是我的错误。属性定义Id是CustomPropertyDefinition的Id。@Smutje
@Entity
@Table(name = "custom_property_definitions")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "definitionsUsedIn" })
public class CustomPropertyDefinition {

    @Id
    @GeneratedValue(generator = "uuid")
    @GenericGenerator(name = "uuid", strategy = "uuid2")
    @Column(name = "id", length = 40)
    private String id;

    @Column(name = "property_type", nullable = false, length = 10)
    private String propertyType;

    @Column(name = "symbolic_name", unique = true, nullable = false)
    private String symbolicName;

    @Column(name = "lower_bound")
    private String lowerBound;

    @Column(name = "upper_bound")
    private String upperBound;

    @ElementCollection
    @CollectionTable(name = "custom_property_definition_allowed_values", joinColumns = @JoinColumn(name = "id"))
    @Cascade(CascadeType.ALL)
    @Column(name = "allowedValue")
    @OrderBy("allowedValue ASC")
    private Set<String> allowedValues;

    @Transient
    private Set<String> allowedValuesToAdd = new HashSet<String>();

    @ManyToMany(mappedBy = "customPropertyDefinitions")
    private Set<DocumentClassDefinition> definitionsUsedIn;

    @ManyToMany(mappedBy = "custPropDefinitions")
    private Set<PropertyFolderStructure> propertyFolderStructure;