我有整数列作为"状态"在我的数据库。
我的枚举类:
public enum MemberStatus {
PASSIVE(0),ACTIVE(1);
private int value;
private MemberStatus(int value) {
this.value = value;
}
public int getValue() {
return value;
}
}
我的实体字段:
@Column(name = "status", nullable = false)
@Enumerated(EnumType.ORDINAL)
private MemberStatus status;
Hibernate日志:
组织。postgresql。util。PSQLException:错误:“status”列的类型为integer,但表达式的类型为bytea。提示:您需要重写或强制转换表达式。二进制数据
我使用PostgreSQL。如何解决这个问题?有什么想法吗?
我建议你用转换器。
这是我想到的最干净的解决方案,因为:
您可以将该字段定义为:
@Column(name = "status", nullable = false)
@Convert(converter = MemberStatusEnumConverter.class)
private MemberStatus status;
枚举变得更简单:
public enum MemberStatus {
PASSIVE,
ACTIVE;
}
以及您的转换器类MemberStatusEnumConverter:
import javax.persistence.AttributeConverter;
import javax.persistence.Converter;
@Converter
public class MemberStatusEnumConverter implements
AttributeConverter<MemberStatus,Integer>{
@Override
public Integer convertToDatabaseColumn(MemberStatus attribute) {
switch (attribute) {
case PASSIVE:
return new Integer(0);
case COUNTYLEVEL:
return new Integer(1);
default:
throw new IllegalArgumentException("Unknown" + attribute);
}
}
@Override
public MemberStatus convertToEntityAttribute(Integer dbData) {
if (dbData == 0){
return MemberStatus.PASSIVE;
} else if (dbData == 1){
return MemberStatus.ACTIVE;
}
else{
throw new IllegalArgumentException("Unknown" + dbData);
}
}
}
本文描述了我为您的示例实现的解决方案。
问题内容: 我试图确定如何访问JObject中的数据,但我终生无法确定如何使用它。 我可以将其打印到执行Console.WriteLine(Object)的控制台中,然后看到数据,它看起来像: 但是我不知道如何迭代/枚举它,任何人都有想法吗?我现在很茫然。 问题答案: 如果您查看相关文档,将会发现它实现了。因此,您可以使用以下命令简单地对其进行迭代:
使用上面的代码,我可以根据枚举值获取字段的值。现在如何设置字段的基于值例如:如果被选中,那么我需要设置到输入值。
问题内容: 具有内部字段的枚举,有点像地图。 现在,我需要按其内部字段枚举。 写下: 但是,每次需要查找适当的实例时,对所有枚举进行查找并不是非常有效。 还有其他方法可以做到吗? 问题答案: 您可以将a 与初始化程序一起使用,该初始化程序将使用由其字段键入的值来填充它。 请注意,已完成,也已完成。 您现在可以期望是一个操作。 参考文献 JLS 8.7静态初始值设定项 JLS 8.9枚举 注意 该方
我在使用SpringData/Hibernate按自定义规则对枚举进行排序时遇到了一些小问题。 A有一个名为DeviceState的枚举,它有自己的优先级字段。 枚举由DeviceEntity使用: 有线索吗,救命?点子?请记住,这是生产工作系统,我不能做任何“烟火”。
我试图在Avro模式中创建Union字段,并用它发送相应的JSON消息,但要有一个字段-。 https://avro.apache.org/docs/1.8.2/spec.html#工会 具有相应JSON数据的最简单联合类型(avro模式)的示例是什么?(尝试制作不含NULL/空数据的示例和含NULL/空数据的示例)。
问题内容: 任务是使用java实现漂亮的策略设计模式: 但是当我指的是 无法对非静态字段someField进行静态引用。 有什么问题,有可能做得更好吗? 问题答案: 专门的不过是具有内部类语义的子类。如果在编译后查看字节码,您会注意到编译器仅插入用于读取私有字段的访问器方法,但是任何专用枚举都被编译为自己的类。您可以考虑将其实现为: 如您所见,发生相同的编译器错误。实际上,您的问题与s 不相关,而