有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过spring数据使用复合PK集合的java查询(Hibernate JPA)

我通过@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> {

}

我想通过具体的名字和姓氏列表从db中获取所有活跃用户。 我想用这样的方法

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

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


共 (1) 个答案

  1. # 1 楼答案

    您可以使用@Embeddable&^复合主键的{}

    @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);
    

    关于@Embeddable&@EmbeddedIdhere