gpt4 book ai didi

java - 如何使用复合键选择对象列表?

转载 作者:太空宇宙 更新时间:2023-11-04 15:18:43 25 4
gpt4 key购买 nike

当前使用 Eclipselink JPA 2.4.2,并通过 @IdClass 方法使用组合键将一堆对象存储在数据库中,即:

@Entity
@IdClass(ThingsPK.class)
public class MyBunchOfThings {

@Id
@GeneratedValue(generator="ID_SEQ")
@SequenceGenerator(name="ID_SEQ")
private Integer id;

@Id
private Date timestamp;

...

}

public class ThingsPK {

private Integer id;

private Date timestamp;

}

如果我需要通过 select in 子句选择其中一些内容,如何通过 JPQL 使用复合主键来执行此操作?

例如

List<ThingsPK> keyList = ...
TypedQuery<MyBunchOfThings> query = em.createQuery("SELECT t FROM MyBunchOfThings t WHERE t.??? IN :keyList", MyBunchOfThings.class);
query.setParameter("keyList", keyList);
List<MyBunchOfThings> foundThings = query.getResultList();

最佳答案

如果您想使用 IN JPQL 运算符,请使用 @EmbeddedId 。否则在查询中使用 AND/OR,例如:

SELECT t FROM MyBunchOfThings t WHERE (t.id=:id1 AND t.timestamp=:ts1) OR (t.id=:id2 AND t.timestamp=:ts2) OR...

或者,您可以尝试以下查询:

List<ThingsPK> keyList = ...
TypedQuery<MyBunchOfThings> query = em.createQuery("SELECT t FROM MyBunchOfThings t WHERE t IN :keyList", MyBunchOfThings.class);

关于java - 如何使用复合键选择对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20639456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com