gpt4 book ai didi

java - 如何使用 JPQL 测试 Enum 值是否在 EnumSet 中

转载 作者:行者123 更新时间:2023-11-30 02:18:40 24 4
gpt4 key购买 nike

我有一个属性如下:

@Entity
class Project implements Serializable {
@Convert(converter = TypeFlattener.class)
@Column(name = "assignable_types")
private EnumSet<Type> assignableTypes;

TypeFlattener 的要点是我想避免简单列表的标准化,因此基本上它将 EnumSet 与具有逗号分隔值的简单字符串相互转换匹配Enum.name()

现在的问题是如何仅过滤在 allocateableTypes 中具有特定类型的项目?

我最好的方法是这样的:

@NamedQuery(
name="Project.findByType",
query="SELECT p FROM Project p WHERE :t IN p.assignableTypes"
)

我应该为 :t 传递什么? String版本如下?我可以这样做吗?

q.setParameter("id", "MAJOR");

最佳答案

转换器在这里并不重要,因为他只影响数据库表示。以下查询使用 MEMBER OF应该管用。

TypedQuery<Project> query = em.createQuery(
"SELECT p FROM Project p WHERE :type MEMBER OF p.assignableTypes", Project.class);
query.setParameter("type", Type.ONE);
List<Project> resultMemberOf = query.getResultList();

关于java - 如何使用 JPQL 测试 Enum 值是否在 EnumSet 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47520947/

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