为了账号安全,请及时绑定邮箱和手机立即绑定

Hibernate CriteriaQuery 如何查找具有两个条件的整数列表

Hibernate CriteriaQuery 如何查找具有两个条件的整数列表

忽然笑 2021-09-03 16:40:34
我有两个实体类一:@Table(name = "package")public class Package {    @Id    @Column(name = "package_id", insertable = false, nullable = false)    private Long packageId;    @Column(name = "timestamp", nullable = false, updatable = false)    @Temporal(TemporalType.TIMESTAMP)    private Date timestamp;    @Column(name = "name", nullable = false)    private String name;    @ManyToOne(fetch = FetchType.LAZY, optional = false)    @JoinColumn(name = "queue_id",foreignKey=@ForeignKey(name = "package_queue_id_fk"))    private Queue Queue;@Column(name = "file_number", nullable = true)private Integer fileNumber;和@Table(name = "queue")public class Queue {    @Id    @Column(name = "queue_id", insertable = false, nullable = false)    private Integer queue;    @Column(name = "description", nullable = true)    private String description;    @Column(name = "name", nullable = false)    private String name;    @OneToMany(mappedBy = "Queue", fetch = FetchType.LAZY, cascade = { CascadeType.PERSIST, CascadeType.REFRESH })    @MapKeyColumn(name = "package_id")    private Set<Package> packages;我想根据 package.name 和 package.queue.queue_id 找到文件编号列表所以目前我只有一个条件(名称),它看起来像这样:public List<Integer> getAllFileNumbers(String fileName, Integer queueId) {    CriteriaBuilder cb = em.getCriteriaBuilder();    CriteriaQuery<Integer> query = cb.createQuery(Integer.class);    Root<Package> package = query.from(package.class);    query.select(package.get("fileNumber")).where(cb.equal(package.get("name"), fileName));    return em.createQuery(query).getResultList();}任何人都可以帮我添加另一个,除此之外,还要记住该值必须来自另一个实体。
查看完整描述

2 回答

?
慕的地6264312

TA贡献1817条经验 获得超6个赞

queue_id是列的名称。您必须使用字段的名称,即Queue,并且您必须获取它的 id 字段 ( queue) 进行比较。

如果您使用元模型生成器,这可以变得更容易和更类型安全。


查看完整回答
反对 回复 2021-09-03
  • 2 回答
  • 0 关注
  • 255 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信