【发布时间】:2018-06-02 16:51:54
【问题描述】:
我已经实现了一个扩展 CrudRepository 的存储库。底层模型(Account)有一个plaidAccountId字段,对应的查询方法是findByPlaidAccountId。最好我能说的是,当其他模型上的其他查询正常工作时,我已经正确连接了它。但是,此查询不返回任何结果。我已经手动验证了数据库中存在与提供的查询参数匹配的项目,但仍然返回 null。
以下是相关配置。让我知道是否还有其他有用的信息可以发布。提前致谢。
我正在执行的查询:
accountService.findByPlaidAccountId(account.getAccountId()
我已登录以验证 accountService 已初始化并且 account.getAccount() 提供了预期的字符串值。
// AccountRepository.java
@Repository
public interface AccountRepository extends CrudRepository<Account, Long> {
Set<Account> findAllByUser(User user);
Account findByPlaidAccountId(String plaidAccountId);
Account findById(int id);
Account findAccountByPlaidAccountId(String plaidAccountId);
}
--
// AccountService.java
@Service
public class AccountService {
private AccountRepository accountRepository;
@Autowired
public AccountService(AccountRepository repository) {
this.accountRepository = repository;
}
public Account findById(int id) {
return accountRepository.findById(id);
}
public Account findByPlaidAccountId(String plaidAccountId) {
return accountRepository.findByPlaidAccountId(plaidAccountId);
}
public Iterable<Account> findAll() {
return accountRepository.findAll();
}
public Set<Account> findAllByUser(User user) {
return accountRepository.findAllByUser(user);
}
public void saveAccount(Account account) {
accountRepository.save(account);
}
public Account findAccountByPlaidAccountId(String plaidAccountId) {
return accountRepository.findAccountByPlaidAccountId(plaidAccountId);
}
}
--
// Account.java
@Entity
@Table(name = "accounts")
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "account_id")
private int id;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "user_id", nullable = false)
private User user;
@Column(name = "plaid_account_id")
@NotEmpty(message = "Plaid account number is required")
private String plaidAccountId;
@Column(name = "account_type")
private String accountType;
@Column(name = "account_subtype")
private String accountSubtype;
@Column(name = "institution_id")
private String institutionId;
@Column(name = "current_balance")
private double currentBalance;
@Column(name = "available_balance")
private double availableBalance;
@Column(name = "account_limit")
private double accountLimit;
@Column(name = "name")
private String name;
@Column(name = "official_name")
private String officialName;
@Column(name = "mask")
private String mask;
@ManyToOne
@JoinColumn(name = "plaid_item_id", nullable = false)
private PlaidItem plaidItem;
public Account() {
}
// ... getters and setters
更新:JPA SQL 日志记录
Hibernate: select account0_.account_id as account_1_0_, account0_.account_limit as account_2_0_, account0_.account_subtype as account_3_0_, account0_.account_type as account_4_0_, account0_.available_balance as availabl5_0_, account0_.current_balance as current_6_0_, account0_.institution_id as institut7_0_, account0_.mask as mask8_0_, account0_.name as name9_0_, account0_.official_name as officia10_0_, account0_.plaid_account_id as plaid_a11_0_, account0_.plaid_item_id as plaid_i12_0_, account0_.user_id as user_id13_0_ from accounts account0_ where account0_.plaid_account_id=?
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: spring hibernate spring-boot spring-data spring-data-jpa