验证货币代码是否与允许的值之一匹配
Validate currency code matches one of the allowed values
我有一个 POJO,其中包含一个名为 price
的字段。
该字段的类型是 javax.money.MonetaryAmount
,这样我就可以从 JSR 354 验证等中受益。
我在字段上有一个约束,指定货币必须是 EUR
:
@Currency("EUR")
如何指定货币必须是 EUR
或 USD
?
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;
}
}
注解支持String[]
为value
:https://github.com/hibernate/hibernate-validator/blob/master/engine/src/main/java/org/hibernate/validator/constraints/Currency.java
尽管您可以简单地使用 @Currency({"EUR", "USD"})
我有一个 POJO,其中包含一个名为 price
的字段。
该字段的类型是 javax.money.MonetaryAmount
,这样我就可以从 JSR 354 验证等中受益。
我在字段上有一个约束,指定货币必须是 EUR
:
@Currency("EUR")
如何指定货币必须是 EUR
或 USD
?
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;
}
}
注解支持String[]
为value
:https://github.com/hibernate/hibernate-validator/blob/master/engine/src/main/java/org/hibernate/validator/constraints/Currency.java
尽管您可以简单地使用 @Currency({"EUR", "USD"})