/*
* Hibernate, Relational Persistence for Idiomatic Java
*
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
*/
package org.hibernate.test.annotations.uniqueconstraint;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
import org.hibernate.AnnotationException;
import org.hibernate.boot.MetadataSources;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.testing.TestForIssue;
import org.hibernate.testing.junit4.BaseUnitTestCase;
import org.junit.Test;
/**
* @author Nikolay Shestakov
*
*/
public class UniqueConstraintValidationTest extends BaseUnitTestCase {
@Test(expected = AnnotationException.class)
@TestForIssue(jiraKey = "HHH-4084")
public void testUniqueConstraintWithEmptyColumnName() {
buildSessionFactory(EmptyColumnNameEntity.class);
}
@Test
public void testUniqueConstraintWithEmptyColumnNameList() {
buildSessionFactory(EmptyColumnNameListEntity.class);
}
@Test(expected = AnnotationException.class)
public void testUniqueConstraintWithNotExistsColumnName() {
buildSessionFactory(NotExistsColumnEntity.class);
}
private void buildSessionFactory(Class<?> entity) {
StandardServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().build();
try {
new MetadataSources( serviceRegistry )
.addAnnotatedClass( entity )
.buildMetadata()
.buildSessionFactory()
.close();
}
finally {
StandardServiceRegistryBuilder.destroy( serviceRegistry );
}
}
@Entity
@Table(name = "tbl_emptycolumnnameentity", uniqueConstraints = @UniqueConstraint(columnNames = ""))
public static class EmptyColumnNameEntity implements Serializable {
@Id
protected Long id;
}
@Entity
@Table(name = "tbl_emptycolumnnamelistentity", uniqueConstraints = @UniqueConstraint(columnNames = {}))
public static class EmptyColumnNameListEntity implements Serializable {
@Id
protected Long id;
}
@Entity
@Table(name = "tbl_notexistscolumnentity", uniqueConstraints = @UniqueConstraint(columnNames = "notExists"))
public static class NotExistsColumnEntity implements Serializable {
@Id
protected Long id;
}
}