gpt4 book ai didi

java - spring data,PagingAndSorting存储库,根据类类型的(嵌套)属性值进行排序

转载 作者:行者123 更新时间:2023-12-02 08:46:20 25 4
gpt4 key购买 nike

我有一个 PagingAndSorting 存储库,用于一个由人员组成的简单应用程序。对像年龄这样的属性进行简单的排序效果很好......

Sort sort = Sort.by("age").ascending();

for (Person p : personRepository.findAll(sort)) {
log.info(p.toString());
}

我也想按姓氏对人员进行排序。但我没有为名字和姓氏创建两个属性。我创建了一个名称类,其中包含名字和姓氏,并在 Person 中创建了这种类型的名称属性...

@Entity
public class Person {
// ...
@Convert(converter = NameAttributeConverter.class)
@Column

private Name name;
// ...
}

public final class Name implements Comparable, Serializable {
// ...
private String firstName;
private String lastName;
// ...
}

public class NameAttributeConverter implements AttributeConverter<Name,String> {
{
String firstName = attribute.getFirstName() == null ? " " : attribute.getFirstName();
String lastName = attribute.getLastname() == null ? " " : attribute.getLastname();

return firstName+" "+lastName;
}

public Name convertToEntityAttribute(String dbData) {
if(dbData!=null && dbData.split(" ").length > 0) {
String fname = dbData.split(" ")[0];
String lname = dbData.split(" ")[1];

return new Name(fname,' ',lname);
}

return null;
}
}

如何按姓氏(或名字)排序?类似的东西

Sort sort = Sort.by("name").ascending();

for (Person p : personRepository.findAll(sort)) {
log.info(p.toString());
}

执行并不会产生任何错误(例如,人员打印在控制台上),但无法按预期工作。

它使用名字升序排序(不知道为什么)。

如何根据类名的lastName属性实现排序?

感谢和问候

最佳答案

您正在将 name 列的数据存储为数据库中的 firstName+""+lastName

所以JPA按名称排序数据意味着按firstName+""+lastName排序。

如果您在数据库单独的列中定义名字和姓氏,则也可以按姓氏排序。你可以关注我的回答here来解决这个问题。

关于java - spring data,PagingAndSorting存储库,根据类类型的(嵌套)属性值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61057726/

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