我有两个实体类一:@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
) 进行比较。
如果您使用元模型生成器,这可以变得更容易和更类型安全。
添加回答
举报
0/150
提交
取消