gpt4 book ai didi

java - 使用 Criteria API 加入,在实体映射 "one to one"中

转载 作者:行者123 更新时间:2023-12-01 17:58:39 24 4
gpt4 key购买 nike

我需要在映射“一对一”的实体中使用条件进行连接

示例:

public class Item {

@OneToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "transcation_id")
private Transaction transaction;

private String status;
...
...

}
public class Transaction {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
...
...

}

我的查询基于实体“Transaction”,但是我想获取实体“Item”的属性“status”

我需要在我的方法中做这样的事情:

     predicates.add(root.join("?????").get("????").in("STATUS_OK"));

最佳答案

我现在也在尝试学习标准 API,所以这只是一个疯狂的猜测:

CriteriaBuilder criteriaBuilder = em.getCriteriaBuilder();
CriteriaQuery<String> searchQuery = criteriaBuilder.createQuery(String.class);
Root<Transaction> root = searchQuery.from(Transaction.class);
Join<Transaction, Item> itemJoin = itemJoin.join(statusList);
List<Predicate> restrictions = new ArrayList<>();
restrictions.add(criteriaBuilder.equal(itemJoin.get(status), root.get(???)));
searchQuery.select(status).where( restrictions.toArray(new Predicate[0] ));
TypedQuery<Status> query = em.createQuery(searchQuery);
List<Status> result = query.getResultList();

statusList 需要在 Item.class 中创建,如下所示:

@OneToMany(mappedBy = "status")
List<status> statusList;

也可以看看这里:JOIN with CriteriaQuery?

关于java - 使用 Criteria API 加入,在实体映射 "one to one"中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60673275/

24 4 0
文章推荐: java - 使用BufferedReader输入字符
文章推荐: iphone - CAGradientLayer 紫色而不是红色
文章推荐: Java - 将 List 转换为 List