SpringBoot JPA 复合主键里使用一部分主键的查询方法

对于JPA里使用复合主键,需要使用复合主键的一部分列来查询结果时,

(例如主键由 AID,BID两个部分来组成,需要使用AID来查询出对应的结果时)

在其他文章看到使用

repository.findByIDAID()

这种形式的方法不行时,

可以试试这种形式的

public interface 类名Repository extends JpaRepository<类名, 类名PK> {
    List<类名> find 类名 By 类名PK _ 一个主键 Containing(String aid);
}

//空格是为了解释,实际上没有空格
//类名 指使用了复合主键的Entity类的类名称
//类名PK 是复合主键的类,创建方法其他博文可以找出,easy

这里假设要查询的类的复合主键由AID和BID组成

这样可以返回所有包含对应AID(即部分主键)的结果,这里即所有满足 aid 的结果

例如下面的

这里Location是一个类,使用了复合主键LocationPK来作为数据库的主键

 LocationPK如下,其log_id和log_time作为复合主键,因为项目中查找一个运输中的货物log既需要它的id也需要它的time

//

(另外就是学习过程中对于JPA和Mysql的驼峰标识和下划线搞的迷了,所以这里推荐两个都不使用,虽然这样有点违背开发规则......)

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用JPA复合主键查询来获取一个实体对象的列表。首先,确保你的实体类中定义了一个复合主键。然后,使用`@EmbeddedId`注解将复合主键嵌入到实体类中。 下面是一个示例,假设你有一个名为`User`的实体类,它具有复合主键`userId`和`companyId`: ```java @Entity public class User { @EmbeddedId private UserId id; // 其他属性和方法... } ``` 接下来,你需要创建一个表示复合主键的嵌入式类。在这个例子中,我将它命名为`UserId`: ```java @Embeddable public class UserId implements Serializable { private Long userId; private Long companyId; // 构造函数、getter和setter方法... } ``` 现在,你可以使用JPA的`EntityManager`或`JpaRepository`来进行查询。以下是一个使用`JpaRepository`的示例代码: ```java @Repository public interface UserRepository extends JpaRepository<User, UserId> { List<User> findAllByCompanyId(Long companyId); } ``` 在上面的示例中,我们定义了一个名为`UserRepository`的接口,并继承了`JpaRepository<User, UserId>`。通过添加名称为`findAllByCompanyId`的方法,你可以按照公司ID来查询匹配的用户列表。 现在,你可以在需要的地方注入`UserRepository`并调用`findAllByCompanyId`方法来获取相应的用户列表: ```java @Autowired private UserRepository userRepository; public List<User> getUsersByCompanyId(Long companyId) { return userRepository.findAllByCompanyId(companyId); } ``` 这样,你就可以使用JPA复合主键查询来获取用户列表了。记得根据你的实际情况进行适当的调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值