Java 验证货币代码是否与允许的值之一匹配

Java 验证货币代码是否与允许的值之一匹配,java,validation,java-money,jsr354,Java,Validation,Java Money,Jsr354,我有一个POJO,它包含一个名为price的字段 该字段的类型是javax.money.MonetaryAmount,因此我可以从JSR354验证中获益 我对字段有一个限制,指定货币必须为欧元: 如何指定货币必须为欧元或美元 注释支持字符串[]作为值: 尽管您可以简单地使用@Currency{EUR,USD} @Currency("EUR") import org.hibernate.annotations.Columns; import org.hibernate.ann

我有一个POJO,它包含一个名为price的字段

该字段的类型是javax.money.MonetaryAmount,因此我可以从JSR354验证中获益

我对字段有一个限制,指定货币必须为欧元:

如何指定货币必须为欧元或美元

注释支持字符串[]作为值:

尽管您可以简单地使用@Currency{EUR,USD}

@Currency("EUR")
import org.hibernate.annotations.Columns;
import org.hibernate.annotations.Type;
import org.hibernate.annotations.TypeDef;
import org.hibernate.validator.constraints.Currency;
import org.jadira.usertype.moneyandcurrency.moneta.PersistentMoneyAmountAndCurrency;

import javax.money.MonetaryAmount;
import javax.persistence.*;

@Entity
@TypeDef(name = "persistentMoneyAmountAndCurrency", typeClass = PersistentMoneyAmountAndCurrency.class)
public class LocalizedProduct {

    @Id
    @GeneratedValue
    private long id;

    @Currency("EUR")
    // @Currency("EUR, USD") .. doesn't work
    @Columns(columns = {
            @Column(name = "amount_currency", length = 3),
            @Column(name = "amount_value", precision = 19, scale = 5)})
    @Type(type = "persistentMoneyAmountAndCurrency")
    private MonetaryAmount price;

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public MonetaryAmount getPrice() {
        return this.price;
    }

    public void setPrice(MonetaryAmount price) {
        this.price = price;
    }
}