当前位置: 首页 > 知识库问答 >
问题:

带枚举的JPQL in子句

翟永春
2023-03-14

我有基于spring boot 1.2.3的应用程序。其中一个模型非常具体:包含枚举列表。当我试图调用spring jpa查询时,sql的一部分消失[C.categories IN(:category)被替换为(.IN(?))]。我想这可能是图书馆的一些问题,或者我做错了什么。

你知道怎么解决这个问题吗?

select count(myobject0_.id) as col_0_0_ from myobject myobject0_ cross join myobject0_categories categories1_ where myobject0_.id=categories1_.myobject_id and (. in (?))
o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 07001
java.sql.SQLException: No value specified for parameter 1
@Query("from Myobject c where and c.categories IN (:category)")
Page<Myobject> findAll(@Param("category") Set<Category> categories, Pageable pageable);

目标模型包含:

@Column(name = "category")
@Enumerated(EnumType.STRING)
@ElementCollection(fetch = FetchType.LAZY)
@CollectionTable(name = "myobject_categories", joinColumns = @JoinColumn(name = "myobject_id"))
    private Set<Category> categories;

枚举模型:

public enum Category {
CATEGORY(1), CATEGORY2(2);

private final Integer id;

Category(Integer id) { this.id=id; }

public Integer getId() { return id; }
}

共有1个答案

贝研
2023-03-14

类似这样的内容将是有效的JPQL,可用于任何兼容的JPA2提供程序

SELECT c FROM Myobject c WHERE :category MEMBER OF c.categories
 类似资料:
  • 我有这个枚举: 我想用作rest请求的参数: 当我发送这些请求时效果很好 但当我发送: 我收到了500条回复,控制台上有这样一条消息: 有没有办法防止spring抛出这些异常并将枚举设置为null? 编辑 斯特雷洛克公认的答案有效。然而,我决定处理MethodArgumentTypeMismatchException。

  • 在Java中,有没有办法从现有枚举中定义一个新枚举?我想要以下功能。 1、2、3和所有这些都必须相同,即, 一个真实的例子是天、星期、周末、讲座、派对等。

  • 问题内容: 这不是卡住我的问题,而是我正在寻找一种编写代码的整洁方法。 本质上,我正在编写一个事件驱动的应用程序。用户触发一个事件,该事件被发送到适当的对象,然后这些对象处理事件。现在,我正在编写偶数处理程序方法,并且希望使用switch语句确定如何处理事件。现在,在我研究通用结构时,事件类非常简单: 然后,在另一堂课中,我会看到类似以下内容的内容: 我会 喜欢 做的就是这样的事情(尽管我当然会坚

  • 问题内容: 我有一个使用枚举的数据库表。这已经可以与hibernate(使用XML)一起使用了,我正尝试将其转换为注释,因为这是仍在使用xml表示法的最后一部分。 列定义: 以下作品: 这不起作用: 注释样式在启动时导致以下异常:org.hibernate.HibernateException:UserDTO中列状态的列类型错误。找到:枚举,预期:varchar(255) 我有什么办法强迫它像使用

  • 首先,我要说明我对C#中的枚举更加熟悉,而Java中的枚举似乎是一团糟。 正如您所看到的,我试图在下一个示例中使用switch语句@enums,但无论我在做什么,我总是得到一个错误。 我收到的错误是: 限定的大小写标签必须替换为限定的枚举常量 问题是我很理解这个错误,但我不能只写VALUE_A,因为枚举位于另一个子类中。有没有办法解决这个问题?为什么会发生在Java?

  • 我正在尝试编写用于XML检查的XML模式(XSD)。有一个元素包含枚举值和子元素。它的格式确实很奇怪,但被xml接受了。 XML元素能否同时包含文本和子元素? 我的案例: 我正在尝试编写xml模式(XSD)来验证格式。所需元素node1的文本有三个限制值。当文本的值等于“c”时,它还将包含一个子节点1。 例如,模式将通过以下情况: 或 或 但无论如何,它不会通过: 或 因为子节点1对于值“c”是必