首页 > 解决方案 > 如何从 Spring Data JPA 在 JpaRepository 中创建自定义方法?

问题描述

我正在使用 Spring Data JPA 中的 JpaRepository 来调用 MySQL 数据库。我知道我不需要为 findById、save 等添加方法,因为它们是由 Spring 实现的,但我想添加一个方法:findByAccountNumber()我不知道该怎么做。

我试图以这种方式做,但它不工作:

@Repository
public interface AccountRepository extends JpaRepository<Account, Long> {

    Account findByAccountNumber(String accountNumber);
}

账户类:

@Builder
@AllArgsConstructor
@NoArgsConstructor
@Data
@Entity
@Table(name = "account")
public class Account {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "accountId")
    private Long accountId;

    @Column(name = "accountNumber")
    private String accountNumber;

    @Column(name = "currentBalance")
    private BigDecimal currentBalance;
}

所以当我打电话时,accountRepository.findByAccountNumber(accountNumber)我收到空值。

CREATE TABLE `account` (
  `accountId` bigint(19) NOT NULL AUTO_INCREMENT,
  `accountNumber` varchar(100) NOT NULL,
  `currentBalance` decimal(10,5) NOT NULL,
  PRIMARY KEY (`accountId`)
)

我该怎么做这个方法?谢谢!

标签: javaspringspring-bootjpaspring-data-jpa

解决方案


也许您需要添加org.springframework.data.repository.query.Param注释。

Account findByAccountNumber(@Param("accountNumber") String accountNumber);

推荐阅读