diff --git a/persistence-modules/hibernate-mapping/pom.xml b/persistence-modules/hibernate-mapping/pom.xml
index 6bab3c5b1f..67eda5bf72 100644
--- a/persistence-modules/hibernate-mapping/pom.xml
+++ b/persistence-modules/hibernate-mapping/pom.xml
@@ -5,9 +5,9 @@
com.baeldung
- parent-modules
+ persistence-modules
1.0.0-SNAPSHOT
- ../../
+ ..
hibernate-mapping
@@ -31,17 +31,12 @@
h2
${h2.version}
-
+
org.hibernate
hibernate-validator
${hibernate-validator.version}
-
- javax.el
- javax.el-api
- ${javax.el-api.version}
-
org.glassfish
javax.el
@@ -60,11 +55,10 @@
- 5.3.7.Final
+ 5.3.10.Final
3.8.0
- 5.3.3.Final
- 2.2.5
- 3.0.1-b08
+ 6.0.16.Final
+ 3.0.1-b11
-
\ No newline at end of file
+
diff --git a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
index f6e8f1cdd6..961fc944a4 100644
--- a/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
+++ b/persistence-modules/hibernate-mapping/src/main/java/com/baeldung/hibernate/persistmaps/mapkey/User.java
@@ -6,6 +6,7 @@ import javax.persistence.Id;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Length;
+import org.hibernate.validator.constraints.CreditCardNumber;
@Entity
public class User {
@@ -23,6 +24,12 @@ public class User {
@Size(min = 3, max = 5)
private String city;
+ @CreditCardNumber
+ private String creditCardNumber;
+
+ @CreditCardNumber(ignoreNonDigitCharacters = true)
+ private String lenientCreditCardNumber;
+
public User(String firstName, String middleName, String lastName, String city) {
super();
this.firstName = firstName;
@@ -63,4 +70,19 @@ public class User {
this.city = city;
}
+ public String getCreditCardNumber() {
+ return creditCardNumber;
+ }
+
+ public void setCreditCardNumber(String creditCardNumber) {
+ this.creditCardNumber = creditCardNumber;
+ }
+
+ public String getLenientCreditCardNumber() {
+ return lenientCreditCardNumber;
+ }
+
+ public void setLenientCreditCardNumber(String lenientCreditCardNumber) {
+ this.lenientCreditCardNumber = lenientCreditCardNumber;
+ }
}
diff --git a/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java
new file mode 100644
index 0000000000..aaf52fe765
--- /dev/null
+++ b/persistence-modules/hibernate-mapping/src/test/java/com/baeldung/hibernate/validation/UserAdditionalValidationUnitTest.java
@@ -0,0 +1,72 @@
+package com.baeldung.hibernate.validation;
+
+import com.baeldung.hibernate.HibernateUtil;
+import com.baeldung.hibernate.Strategy;
+import com.baeldung.hibernate.persistmaps.mapkey.User;
+import org.hibernate.Session;
+import org.hibernate.SessionFactory;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+import javax.persistence.PersistenceException;
+import javax.validation.ConstraintViolation;
+import javax.validation.Validation;
+import javax.validation.Validator;
+import javax.validation.ValidatorFactory;
+import java.util.Set;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+public class UserAdditionalValidationUnitTest {
+
+ private static Validator validator;
+ private static SessionFactory sessionFactory;
+ private Session session;
+ private Set> constraintViolations;
+
+ @BeforeClass
+ public static void before() {
+ ValidatorFactory config = Validation.buildDefaultValidatorFactory();
+ validator = config.getValidator();
+ sessionFactory = HibernateUtil.getSessionFactory(Strategy.MAP_KEY_BASED);
+ }
+
+ @Before
+ public void setUp() {
+ session = sessionFactory.openSession();
+ session.beginTransaction();
+ }
+
+ @Test
+ public void whenValidationWithCCNAndNullCCN_thenNoConstraintViolation() {
+ User user = new User("John", "Paul", "Butler", "York");
+ constraintViolations = validator.validateProperty(user, "creditCardNumber");
+ assertTrue(constraintViolations.isEmpty());
+ }
+
+ @Test
+ public void whenValidationWithCCNAndValidCCN_thenNoConstraintViolation() {
+ User user = new User("John", "Paul", "Butler", "York");
+ user.setCreditCardNumber("79927398713");
+ constraintViolations = validator.validateProperty(user, "creditCardNumber");
+ assertTrue(constraintViolations.isEmpty());
+ }
+
+ @Test
+ public void whenValidationWithCCNAndInvalidCCN_thenConstraintViolation() {
+ User user = new User("John", "Paul", "Butler", "York");
+ user.setCreditCardNumber("79927398714");
+ constraintViolations = validator.validateProperty(user, "creditCardNumber");
+ assertEquals(constraintViolations.size(), 1);
+ }
+
+ @Test
+ public void whenValidationWithLenientCCNAndValidCCNWithDashes_thenNoConstraintViolation() {
+ User user = new User("John", "Paul", "Butler", "York");
+ user.setLenientCreditCardNumber("7992-7398-713");
+ constraintViolations = validator.validateProperty(user, "lenientCreditCardNumber");
+ assertTrue(constraintViolations.isEmpty());
+ }
+}