【问题标题】:How to make a custom method in JpaRepository from Spring Data JPA?如何从 Spring Data JPA 在 JpaRepository 中创建自定义方法?
【发布时间】:2020-05-30 18:25:46
【问题描述】:

我正在使用 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) 时,我收到 null。

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

我该如何制作这种方法?谢谢!

【问题讨论】:

  • 在数据库中,Account 存在,搜索 accountNumber ?
  • 是的,该列是 accountNumber。我用表格更新了帖子。
  • 我的意思是数据库中存在任何帐户数据。其中 accountNumber 是您要搜索的内容。你的预期输出是什么?
  • 感谢 Eklavya,我搜索了数据库中不存在的数据

标签: java spring spring-boot jpa spring-data-jpa


【解决方案1】:

也许你需要添加org.springframework.data.repository.query.Param注解。

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

【讨论】:

    猜你喜欢
    • 2016-01-23
    • 2020-01-23
    • 2012-08-06
    • 2017-01-29
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多