我在使用SpringData/Hibernate按自定义规则对枚举进行排序时遇到了一些小问题。
A有一个名为DeviceState的枚举,它有自己的优先级字段。
public enum DeviceState {
ON(4), OFF(3), UPDATE(2), CRITICAL(0), WARNING(1);
private final int priority;
private DeviceState(int priority) {
this.priority = priority;
}
public int getPriority() {
return priority;
}
}
枚举由DeviceEntity使用:
@Entity
public class Device implements Serializable {
// .... other fields
@Enumerated(EnumType.STRING)
private DeviceState state;
// ....
}
Page<Device> pagedDevices = deviceRepository.findAll(DeviceSpecifications.findByFilter(filter), pageable);
有线索吗,救命?点子?请记住,这是生产工作系统,我不能做任何“烟火”。
order by case
when state = 'CRITICAL' then 0
when state = 'WARNING' then 1
when state = 'UPDATE' then 2
when state = 'OFF' then 3
when state = 'ON' then 4
end
我试图在Avro模式中创建Union字段,并用它发送相应的JSON消息,但要有一个字段-。 https://avro.apache.org/docs/1.8.2/spec.html#工会 具有相应JSON数据的最简单联合类型(avro模式)的示例是什么?(尝试制作不含NULL/空数据的示例和含NULL/空数据的示例)。
问题内容: 我们有一个带有枚举字段-的实体,我们想使用JPA注释-为它设置默认值。 但是,当我们将实体保存到数据库时,此字段的值为和。对于布尔字段- 正确的默认值()已保存。 如果改为使用:,则会在保存时得到以下异常: 我们做错了什么?为什么它仅适用于布尔值? 问题答案: 当某些SQL代码在未为emailCommunicationStatus列指定任何值的情况下插入一行时,您所做的工作很有用。在这
问题内容: 在DAO中具有一个其值来自Java枚举的字段通常很有用。一个典型的示例是登录DAO,您通常在其中具有一个将用户表征为“ NORMAL”或“ADMIN”的字段。在Hibernate中,我将使用以下2个对象以(半)类型安全的方式表示此关系: 这行得通,但我发现UserType类过分苛刻,并且为了存储几个值而需要太多的官僚作风。理想情况下,Hibernate应该直接支持枚举字段,并会创建一个
问题内容: 在我的MySQL数据库中,有“ gender enum(’male’,’female’)”列 我创建了枚举“ com.mydomain.myapp.enums.Gender”,并在我的实体中定义了“性别”。 现在,我想将枚举类型保留在我的MySQL数据库中,但是当我启动应用程序时,我得到: 性别列在MyApp.Person中的列类型错误。找到:枚举,预期:整数 为什么是这样?这就像我用
问题内容: 我想知道是否有任何方法可以为不同的类订购枚举。例如,如果我有一组固定的化学物质,它们以不同的方式与其他化学物质发生反应,有些反应强烈,有些反应微弱。我基本上希望能够根据组应该对之反应的化学物质(即取决于类别)来切换它们的排列顺序。我确实知道我应该使用Comparable,但是我不确定该怎么做。如果我不够清楚,请发表评论,我将作进一步解释。 谢谢。 所以我看起来像这样,我已经知道每种化学