使用KEY值对定义枚举

时间:2017-11-02 09:11:18

标签: java enums

我有我希望在我的Table实体类上使用的国家列表如下。

package com.danieladenew.webproject.enums;


public enum CountryEnum {

    AMERICA("United States Of America"),
    UK("United Kingdom"),
    ;

    private String name;

    CountryEnum(String s) {
    }

    @Override
    public String ToString() {


    }
}

@Entity
@Table
public class Exchange
{

@Column(name="COUNTRY OF ORIGIN")
@Enumerated(EnumType.STRING)
private CountryEnum countryofOrigin;
.
.


}

但是,我不明白我的身份如何: 使用AMERICA作为密钥 保存数据时选择美利坚合众国?

1 个答案:

答案 0 :(得分:1)

基于此链接:

http://webdev.jhuep.com/~jcs/ejava-javaee/coursedocs/605-784-site/docs/content/html/jpa-entityex-enum.html

定义JPA用于访问country属性的getter / setter。请注意,我们已经将这些方法与getCountryOfOrigin / setCountryOfOrigin方法分开定义,因为它们接受并返回CountryEnum枚举。这些方法与提供者签订合同以返回字符串。我们还需要告诉提供者要使用的数据库列名,因为默认列命名规则在这种情况下不起作用。

    @Access(AccessType.PROPERTY)

    @Column(name="COUNTRY OF ORIGIN", length=32)

    protected String getDBCountryOfOrigin() {

        return countryofOrigin==null ? null : countryofOrigin.name;

    }

    protected void setDBCountryOfOrigin(String dbValue) {

        countryofOrigin = CountryEnum.getName(dbValue);

    }

您需要将此方法添加到枚举

 public static CountryEnum getName(String prettyName) {

            for (CountryEnum country : values()) {

                if (country.name.equals(prettyName)) {

                    return country;

                }

            }

            return null;

        }