Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将自定义/默认值设置为来自数据库的值?_Java_Hibernate_Spring Boot_Jpa - Fatal编程技术网

Java 如何将自定义/默认值设置为来自数据库的值?

Java 如何将自定义/默认值设置为来自数据库的值?,java,hibernate,spring-boot,jpa,Java,Hibernate,Spring Boot,Jpa,如何将自定义/默认值设置为来自数据库的值? 我有以下颜色代码值,需要与DB中的值匹配/设置 **Values from DB** **Default value** At Risk - Red On Track - Green Needs Attention - Yellow 请让我知道如何调整我下面的代码以获得预期的o/p String colorStatus = userObj.setStatus();

如何将自定义/默认值设置为来自数据库的值? 我有以下颜色代码值,需要与DB中的值匹配/设置

**Values from DB**     **Default value**
At Risk -                 Red
On Track -                Green
Needs Attention -         Yellow
请让我知道如何调整我下面的代码以获得预期的o/p

String colorStatus = userObj.setStatus();
            userCodeValue.setStatus(colorStatus);
            /*String yellowColor = "yellow";
            if(colorStatus.equalsIgnoreCase("Need Attention")){
                vlcValue.setStatus(yellowColor);
            }*/

可以使用枚举将映射设置为静态。第一个元素是获取默认颜色的接口:

public interface ColorMapper {
   Color defaultValue();
}
颜色枚举:

public enum  Color {

   RED, GREEN, YELLOW
}
以及原始值和默认值之间的静态映射:

public enum Status implements ColorMapper {

    AT_RISK("At Risk") {
        @Override
        public Color defaultValue() {
            return Color.RED;
        }
    },
    ON_TRACK("On Track") {
        @Override
        public Color defaultValue() {
            return Color.GREEN;
        }
    },
    NEEDS_ATTENTION("Needs Attention") {
        @Override
        public Color defaultValue() {
            return Color.YELLOW;
        }
    };

    private String code;

    Status(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }
}
 @Service
 public class MyService{
     private static final Map<String,String> defaultMappingValues;
     public MyService(){
          defaultMappingValues.put("At Risk", "RED");
          defaultMappingValues.put("On Track", "Green");
          defaultMappingValues.put("Needs Attention","Yellow");
     }

 }
这个映射是静态的,在任何时候都非常清晰。 另一个选项是创建一个
映射
,在其中保持数据库值和默认值之间的映射:

public enum Status implements ColorMapper {

    AT_RISK("At Risk") {
        @Override
        public Color defaultValue() {
            return Color.RED;
        }
    },
    ON_TRACK("On Track") {
        @Override
        public Color defaultValue() {
            return Color.GREEN;
        }
    },
    NEEDS_ATTENTION("Needs Attention") {
        @Override
        public Color defaultValue() {
            return Color.YELLOW;
        }
    };

    private String code;

    Status(String code) {
        this.code = code;
    }

    public String getCode() {
        return code;
    }
}
 @Service
 public class MyService{
     private static final Map<String,String> defaultMappingValues;
     public MyService(){
          defaultMappingValues.put("At Risk", "RED");
          defaultMappingValues.put("On Track", "Green");
          defaultMappingValues.put("Needs Attention","Yellow");
     }

 }

“有风险”可以有红色以外的其他价值?要求是这样的,而且我们提供的默认值/自定义值也不重要,理想情况下,我想要的是与我作为自定义值提供的值相匹配的值。我感谢您的回复,既然我在JPA中使用Springboot,有什么方法可以让它更简单吗?我可以在我的serviceImpl类中编写一些东西吗?