/* * 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 javax.persistence.PersistenceException; import org.hibernate.JDBCException; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase; import org.junit.Test; import static org.hibernate.testing.junit4.ExtraAssertions.assertTyping; import static org.junit.Assert.fail; /** * @author Manuel Bernhardt <bernhardt.manuel@gmail.com> * @author Brett Meyer */ public class UniqueConstraintTest extends BaseCoreFunctionalTestCase { protected Class[] getAnnotatedClasses() { return new Class[]{ Room.class, Building.class, House.class }; } @Test public void testUniquenessConstraintWithSuperclassProperty() throws Exception { Session s = openSession(); Transaction tx = s.beginTransaction(); Room livingRoom = new Room(); livingRoom.setId(1l); livingRoom.setName("livingRoom"); s.persist(livingRoom); s.flush(); House house = new House(); house.setId(1l); house.setCost(100); house.setHeight(1000l); house.setRoom(livingRoom); s.persist(house); s.flush(); House house2 = new House(); house2.setId(2l); house2.setCost(100); house2.setHeight(1001l); house2.setRoom(livingRoom); s.persist(house2); try { s.flush(); fail( "Database constraint non-existant" ); } catch (PersistenceException e) { assertTyping( JDBCException.class, e.getCause() ); //success } finally { tx.rollback(); s.close(); } } }