当前位置: 首页 > 知识库问答 >
问题:

通过spring数据查询复合PK集合(Hibernate JPA)

贝研
2023-03-14

我有实体类用户通过@IdClass注释使用复合键

@Entity
@IdClass(UserId.class)
public class User {

    @Id
    private String name;

    @Id
    private String surname;

    private boolean active;

}

复合键:

@Data
public class UserId implements Serializable {
    private String name;
    private String surname;
}

我将Spring数据与hibernate JPA一起使用。因此,我有回购接口:

public interface UserRepo extends JpaRepository<User, UserId> {

}

我想通过具体姓名和姓氏列表从数据库中获取所有活跃用户。例如。我想使用这样的方法

List<User> findAllByActiveTrue(List<UserId> ids);

如何通过Spring数据或JPQL查询此需求?

共有1个答案

董光霁
2023-03-14

您可以使用嵌入式

@Embeddable
public class UserId implements Serializable {
    private String name;
    private String surname;
}

@Entity
public class User {

    @EmbeddedId
    private UserId userId;
    ...
}

然后像这样查询

List<User> findByUserIdInAndActiveTrue(List<UserId> ids);

关于嵌入式的好教程

 类似资料:
  • 我正在用Java开发一个使用JPA的路线规划系统。我需要创建一个findBy方法,通过包含它的城市列表来查找路线。以下是课程: 现在我尝试了,但并不惊讶它不起作用,如下所示: 有没有一种简单的方法可以使用JPA,或者我必须编写一个困难的自己的@Query并以某种方式迭代,才能通过集合找到一个实体?

  • 我使用的是spring数据mongodb。 这是我的控制器方法: 控制器: 这里我将字符串列表作为请求参数传递。 我的服务方式是: 存储库代码: 在这里,我在存储库中的查询总是返回空数组[]。我不知道这个查询有什么问题。 我的请求URL是:

  • 我尝试使用下面的elasticsearch查询来处理Spring数据。目的是为字段返回唯一的结果。就像与SQL数据库进行比较一样。 我将该字段配置为关键字,它使查询在api中完美运行,如下所示: 我的问题是,当我尝试使用StringQuery运行时,相同的查询在Spring数据中不起作用,我得到以下错误。我猜它使用不同的api来运行查询。 我尝试过使用类型来实现相同的结果,没有重复和没有对象加载,

  • 问题内容: 我想问一下是否有可能使用hibernate方式做到这一点。假设我已经运行了HQL并检索了一个集合。是否可以使用hibernate进一步过滤它? 我试图在标头类中使用,并在查询之前添加session.enable(),但似乎无法正常工作。 样例代码 精简HQL 问题答案: 不。至少不是您问的方式。一旦您要求Hibernate(使用方法)访问数据库,Hibernate就发挥了作用,结果现在

  • 我对mongo很陌生,我正在尝试用两个查询从收集中获取所有数据,我有条目,每个条目都有startdate。我需要得到所有的数据,首先所有项目的开始日期低于当前日期排序的DESC和跟随其余数据的开始日期大于或等于当前日期排序的asc。我不知道该怎么做。很抱歉我的英语不好,我是新手。 我在下一条路上试过这样做 但如果可能的话,我想通过一个查询来实现