我有兩個實體類一:@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
提交
取消