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