Hibernate / JPA使用标准作为注释

时间:2014-01-08 10:42:38

标签: java hibernate jpa criteria hibernate-criteria

是否有人知道是否可以通过注释对对象属性强加标准。这与@Where子句类似,但是我需要过滤的属性实际上并不在执行SELECT的表上,因为它是mappedBy。

希望这个例子能说明:

public class Container {

  @OneToMany(mappedBy = "container")
  private List<Item> items;

  //getter & setter ...

}

public class Item {

  @ManyToOne
  private Container container;

  @OneToOne(mappedBy = "item")
  private User user;

  //getter & setter ...

}

public class User {

  @OneToOne
  private Item item;

  //getter & setter ...

}

我想提取Container,其中没有关联User。如果user表上的Item属性确实存在,那么应该可以使用@Where:

public class Container {

  @OneToOne(mappedBy = "container")
  @Where(clause = "user is null")
  private List<Item> items;

  //getter & setter ...

}

但是因为它是mapBy有没有办法做到这一点?这些表的连接显然已在SQL中执行。也许有一种方法可以引用user属性,例如HQL?

任何帮助非常感谢

1 个答案:

答案 0 :(得分:0)

HQL

select item.container from item i where i.user is null

<强> Container.java

@NamedQueries({
    @NamedQuery(
    name = "findContainerWithNoUser",
    query = "select item.container from item i where i.user is null"
    )
})
@Entity
public class Container {

  @OneToOne(mappedBy = "container")
  private List<Item> items;

  //getter & setter ...

}
相关问题