gpt4 book ai didi

java - Hibernate、MySQL、Enum 和 NULL

转载 作者:可可西里 更新时间:2023-11-01 06:33:19 30 4
gpt4 key购买 nike

我将 MySQL 数据库与 Hibernate 一起使用,并且某些枚举字段允许 NULL 或空值。一切都很好,直到进行查询并且 Hibernate 尝试将空值映射到定义的 Enum 上。我无法在 Enum 中定义一个可行的值,因为 Enum 确实允许空格。

枚举类:

private enum ObjType {
itemA,
itemB,
NULL
}

它采用 NULL 作为成员,但这没有帮助。我是 EE Java 的新手,非常感谢任何帮助。谢谢

最佳答案

您可以向您的枚举添加一个unknowndefaultinvalid 值,如果它是null,它将被映射空格

package com.test;

import java.util.HashMap;

public class Brand{
private static HashMap<String,BrandName> map = new HashMap<String,BrandName>();
public enum BrandName {
HERO("hero"),HONDA("honda"),UNKNOWN("default");

private String value = null;

private BrandName(String value){
this.value = value;
addToMap();
}

private void addToMap(){
map.put(this.value, this);
}

@Override
public String toString(){
return this.value;
}

public static BrandName fromValue(String value){
return map.get(value) != null ? map.get(value) : map.get("default");
}
}
}

使用fromValue 方法,您可以从值中获取枚举对象。使用 toString 方法,您可以获得枚举对象的值。map 将包含值到枚举对象的映射。如果 nullempty space 之类的值在 map 中不存在,则 map 将返回 null,在这种情况下,方法 fromValue 将返回 UNKNOWN 枚举对象。

System.out.println(Brand.BrandName.HERO.toString());
System.out.println(Brand.BrandName.fromValue("").toString());
System.out.println(Brand.BrandName.fromValue(null).toString());
System.out.println(Brand.BrandName.fromValue("honda").toString());

关于java - Hibernate、MySQL、Enum 和 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8454798/

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