CrudRepository
을 확장 한 저장소를 구현했습니다. 기본 모델 (Account
)은 plaidAccountId
필드를 가지며 해당 쿼리 메서드는 findByPlaidAccountId
입니다. 내가 말할 수있는 가장 좋은 것은 다른 모델의 다른 쿼리가 올바르게 작동하는 것처럼이 유선이 올바르게 연결되어 있습니다. 그러나이 쿼리는 결과를 반환하지 않습니다. 제공된 쿼리 매개 변수와 일치하는 데이터베이스에 항목이 있음을 수동으로 확인했지만 여전히 null이 반환됩니다.Spring CrudRepository findBy * 결과가없는 메소드
다음은 관련 구성입니다. 내가 게시 할 수있는 것이 있다면 유용 할 것입니다. 미리 감사드립니다.
쿼리 내가 실행 해요 :
내가accountService
가 초기화 및
account.getAccount()
이 예상되는 문자열 값을 제공하고 있는지 확인하기 위해 로그인 한
accountService.findByPlaidAccountId(account.getAccountId()
.
// 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=?
설명은 확장 토론이 아닙니다. 이 대화는 [채팅으로 이동되었습니다] (http://chat.stackoverflow.com/rooms/161619/discussion-on-question-by-justinraczak-spring-crudrepository-findby-method-retu). –