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

枚举的JPA规范

薛霄
2023-03-14

我的JPA实体作为枚举字段

@Table(name="zsrb_ordini_prod")
@Entity
@JsonIgnoreProperties(ignoreUnknown = true)
public class OrdineProd implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long idOrdineProd;

    ...

    @Enumerated(EnumType.STRING)
    public StOrdine stato = StOrdine.CREATO;

    ...
}

哪里

public enum StOrdine {
    CREATO,
    SCHEDULATO,
    CONFERMATO,
    SCARTATO
}

如果我用规范添加where条件

Specification<OrdineProd> = (root, query, qb)->
                qb.equal(root.get("stato"), StOrdine.SCHEDULATO);


java.lang.IllegalArgumentException: Parameter value [SCHEDULATO] did not match expected type [imp.srb.progettazione.ordProd.StOrdine (n/a)]
    at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:54) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
    at org.hibernate.query.spi.QueryParameterBindingValidator.validate(QueryParameterBindingValidator.java:27) ~[hibernate-core-5.4.9.Final.jar:5.4.9.Final]
...
    

将枚举包含到规范查询中的正确方法是什么?

共有1个答案

杜英叡
2023-03-14

尝试执行以下操作:

Specification<OrdineProd> = (root, query, qb) ->
            qb.equal(root.get("stato"), StOrdine.SCHEDULATO.name);
 类似资料:
  • 我尝试使用@Enumerated annotation映射枚举类型,但得到以下错误: 我的工作:在postgres @entity@table(name=“test_table”)公共类TestTable{... @enumerated(enumtype.string)@column(name=“col”)private TestType col;...}

  • 问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这

  • 我正在为C 11编写一个类似于boost::promote的升级模板别名。这样做的目的是在从变量函数检索参数时避免出现警告。例如 提升模板别名提升了变量参数的默认参数提升后的类型: 1)小于int的整数提升为int 2)浮点提升为双 我的问题是,可以提升标准C枚举,但不能提升C 11枚举类(编译器不会生成警告)。我希望升级使用常规枚举,但忽略C 11枚举类。 如何区分枚举类和枚举在我的推广模板别名

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

  • 问题内容: 可以使用以下任一方法在JPA中定义枚举 要么 我想知道这两个定义的优缺点是什么? 我听说ORDINAL的性能比EclipseLink的STRING更好(更快)。 真的吗? 问题答案: 我总是去。 速度很少是最重要的问题-可读性和可维护性 更为 重要。 我使用它是因为手动检查数据库中的行要容易得多,但更重要的是,我可以做两件事,而无需接触数据库,无法处理: 我可以更改枚举的 顺序 我可以