gpt4 book ai didi

java - 数据库唯一键、JPA 存储库和 getByUniqueKey 签名 : how does it works?

转载 作者:行者123 更新时间:2023-11-29 05:55:01 25 4
gpt4 key购买 nike

背景

数据表项目:

+---------+---------+--------+
| field | type | index |
+---------+---------+--------+
| id_item | INT | PK |
| name | VARCHAR | UNIQUE |
+---------+---------+--------+

ItemRepository.java:

public interface ItemRepository extends CustomRepository<Item, Integer> {
public Item getByName(String name); // because of the unique index
}

CustomRepository.java:

@NoRepositoryBean
public interface CustomRepository<E, PK extends Serializable> extends PagingAndSortingRepository<E, PK>, JpaSpecificationExecutor<E> {
// common methods
}

CustomRepositoryImpl.java:

public class CustomRepositoryImpl<E, PK extends Serializable> extends SimpleJpaRepository<E, PK> implements CustomRepository<E, PK> {
// common methods implementations
}

问题

如您所见,ItemRepository 接口(interface)并非没有实现。这意味着,getByName 方法只有一个签名,永远不会在任何地方实现。但它有效。怎么办?

附言

对于持怀疑态度的人,对于 Eclipse,当按住 Ctrl 并将鼠标悬停在 getByName 签名上时,单击 Open Implementation 不会打开任何 JAVA 文件。

最佳答案

Spring 将 AOP 用于存储库,并将拦截任何 X 与 bean 属性匹配的 getByX 方法。在您的示例中,Item bean 声明了 name 属性,因此 Spring 会为您拦截它。

参见 Defining query methodsSpring Data JPA手册。

关于java - 数据库唯一键、JPA 存储库和 getByUniqueKey 签名 : how does it works?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12526081/

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