gpt4 book ai didi

java - 如何通过 CrudRepository 中的嵌入对象进行搜索?

转载 作者:行者123 更新时间:2023-11-30 07:40:34 26 4
gpt4 key购买 nike

假设我有一个可嵌入的类,它嵌入到如下所示的实体类中。

@Embeddable
public class FullName {
private String firstName;
private String lastName;
// constructor, getters, setters, as needed
}

@Entity
public class Account {
@Embedded
private FullName fullName;
// id, other data and methods
}

一个人可以有多个账户,因此全名不是账户类的键。我想要的是 jpa 存储库中的以下方法

public interface AccountRepository extends CrudRepository<Account, Long> {
Collection<Account> findAllByFullName(FullName fullName);
}

最初,我认为这会奏效,但显然并没有那么简单。我无法使用这样的方法。我认为唯一可能有帮助的是在 FullName 上实现一个 equals 方法,表示具有相同名字和姓氏的 FullName 是相等的,但这没有效果。

我现在最终做的是这样的:

public interface AccountRepository extends CrudRepository<Account, Long> {
Collection<Account> findAllByFullNameFirstNameAndFullNameLastName(String firstName, String lastName);

default Collection<Account> findAllByFullName(FullName fullName) {
return findAllByFullNameFirstNameAndFullNameLastName(fullName.getFirstName(), fullName.getLastName());
}
}

有没有办法避免创建这种中间(可见)方法?

最佳答案

您可以使用 Example如下所示,

Collection<Account> findAll(Example< Account > account);

然后将其传递为,

FullName fullName = new FullName(fname, lname);

Account acc = new Account();
acc.setFullName(fullName);
Collection<Account> accounts = accountRepository.findAll(Example.of(acc));

希望对您有所帮助。

关于java - 如何通过 CrudRepository 中的嵌入对象进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57637624/

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