Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate中子对象列表的条件查询_Java_Hibernate_Spring Mvc - Fatal编程技术网

Java hibernate中子对象列表的条件查询

Java hibernate中子对象列表的条件查询,java,hibernate,spring-mvc,Java,Hibernate,Spring Mvc,我有一个实体类A,子类为Pendinguers,如下所示 A.java @Entity public class A implements Serializable { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; @ManyToMany(fetch = FetchType.EAGER) @JoinTable(name = "PENDING", joinColumns = {@JoinColum

我有一个实体类A,子类为Pendinguers,如下所示

A.java

@Entity
public class A implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;

@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "PENDING", joinColumns = {@JoinColumn(name = "aId")}, inverseJoinColumns = {@JoinColumn(name = "userId")})
@Cascade(value = org.hibernate.annotations.CascadeType.ALL)
private Set<User> approvers = new HashSet<User>();

@Column(name = "active", nullable = false, columnDefinition = "varchar default 'Y'")
@org.hibernate.annotations.Type(type = "yes_no")
private boolean active = true;

@NotBlank
@Column(nullable = false, unique = true)
private String poNo;
}
public class User{
  @Id
  @GeneratedValue(strategy = GenerationType.IDENTITY)
  @Column
  private int id;

  @NotBlank(message = "User ID cannot be empty")
  @Column(unique = true, nullable = false, updatable = false)
  private String userId;
}
我想检索所有已将userId指定为批准者之一的对象。如何使用hibernate标准编写此代码

当我进行一对一映射时,我写了如下内容

createEntityCriteria()
.add(Restrictions.eq("approvers.userId", userId))
.add(Restrictions.eq("active", true)).list();

当我们现在改为多对多映射时,如何实现这一点?

我对这一点非常陌生,但是我已经成功地将此方法用于我正在处理的项目中的许多实体

我已经使用了类似于上面提到的代码的功能。但是,如果这不起作用,您可以使用联接进行操作,如下所示:

    createEntityCriteria()
       .createAlias("approvers", "apprs", JoinType.INNER_JOIN)
       .add(Restrictions.eq("apprs.userId", userId))
       .add(Restrictions.eq("active", true)).list();
内部联接将只返回有审批人的记录,左侧联接将返回有审批人的所有父行(如果可用)

用法:org.hibernate.sql.JoinType


希望这能有所帮助。

我对这一点还不熟悉,但是我已经成功地将此方法用于我正在处理的项目中的许多实体

我已经使用了类似于上面提到的代码的功能。但是,如果这不起作用,您可以使用联接进行操作,如下所示:

    createEntityCriteria()
       .createAlias("approvers", "apprs", JoinType.INNER_JOIN)
       .add(Restrictions.eq("apprs.userId", userId))
       .add(Restrictions.eq("active", true)).list();
内部联接将只返回有审批人的记录,左侧联接将返回有审批人的所有父行(如果可用)

用法:org.hibernate.sql.JoinType

希望这有帮助