如何使用Hibernate配置自定义消息插入?

如何使用Hibernate配置自定义消息插入?,hibernate,validation,jpa,bean-validation,hibernate-validator,Hibernate,Validation,Jpa,Bean Validation,Hibernate Validator,我编写自定义消息插值。我希望JPA将使用我的自定义消息插值。在这里,我发现了以下描述: Configuration<?> configuration = Validation.byDefaultProvider().configure(); ValidatorFactory factory = configuration .messageInterpolator(new ValueFormatterMessageInterpolator(configuration.getDe

我编写自定义消息插值。我希望JPA将使用我的自定义消息插值。在这里,我发现了以下描述:

Configuration<?> configuration = Validation.byDefaultProvider().configure();
ValidatorFactory factory = configuration
    .messageInterpolator(new ValueFormatterMessageInterpolator(configuration.getDefaultMessageInterpolator()))
    .buildValidatorFactory();

Validator validator = factory.getValidator();
像这样的事情会有变化吗

CustomMessageInterpolator(configuration.getDefaultMessageInterpolator()))

另请参见

JSR-303bean验证框架提供了通过XML配置验证框架的可能性

例如
META-INF/validation.xml

见第章

4.4.6。XML配置:META-INF/validation.XML

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd">
    <default-provider>com.acme.ACMEProvider</default-provider>
    <message-interpolator>com.acme.ACMEAwareMessageInterpolator</message-interpolator>
    <constraint-mapping>META-INF/validation/order-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/catalog-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/customer-constraints.xml</constraint-mapping>
    <property name="com.acme.validation.logging">WARN</property>
    <property name="com.acme.validation.safetyChecking">failOnError</property>
</validation-config>
有关详细信息,请参见规范中的:

4.4.6。XML配置:META-INF/validation.XML

<?xml version="1.0" encoding="UTF-8"?>
<validation-config
    xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.0.xsd">
    <default-provider>com.acme.ACMEProvider</default-provider>
    <message-interpolator>com.acme.ACMEAwareMessageInterpolator</message-interpolator>
    <constraint-mapping>META-INF/validation/order-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/catalog-constraints.xml</constraint-mapping>
    <constraint-mapping>META-INF/validation/customer-constraints.xml</constraint-mapping>
    <property name="com.acme.validation.logging">WARN</property>
    <property name="com.acme.validation.safetyChecking">failOnError</property>
</validation-config>

com.acme.ACMEProvider
com.acme.ACMEAwareMessageInterpolator
META-INF/validation/order-constraints.xml
META-INF/validation/catalog-constraints.xml
META-INF/validation/customer-constraints.xml
警告
失败者
用持久化jar(META-INF/validation.xml)打包xml文件,它应该可以工作

根据您的部署包(例如EAR),可能需要将其放入EAR的lib文件夹中的共享lib中

hibernate文档说明:

为Hibernate验证器启用XML配置的关键是 文件validation.xml。如果类路径中存在此文件,则其 创建ValidationFactory时将应用配置。 示例4.1,“validation-configuration-1.0.xsd”显示了 xsd valiation.xml必须遵守


如何使用JPA/Hibernate?我已经更新了答案。我认为您只需要将它放在类路径上,验证框架就会获取它。尽管如此,您仍然可以创建验证器并覆盖xml配置。