SQLExceptionConversionTestpublic class SQLExceptionConversionTest extends org.hibernate.junit.functional.FunctionalTestCase Implementation of SQLExceptionConversionTest. |
Constructors Summary |
---|
public SQLExceptionConversionTest(String name)
super(name);
|
Methods Summary |
---|
public java.lang.String[] | getMappings()
return new String[] {"exception/User.hbm.xml", "exception/Group.hbm.xml"};
| public static junit.framework.Test | suite()
return new FunctionalTestClassTestSuite(SQLExceptionConversionTest.class);
| public void | testBadGrammar()
SQLExceptionConverter converter = getDialect().buildSQLExceptionConverter();
Session session = openSession();
Connection connection = session.connection();
// prepare/execute a query against a non-existent table
PreparedStatement ps = null;
try {
ps = connection.prepareStatement("SELECT user_id, user_name FROM tbl_no_there");
ps.executeQuery();
fail("SQL compilation should have failed");
}
catch( SQLException sqle ) {
assertEquals( "Bad conversion [" + sqle.getMessage() + "]", SQLGrammarException.class, converter.convert(sqle, null, null).getClass() );
}
finally {
if ( ps != null ) {
try {
ps.close();
}
catch( Throwable ignore ) {
// ignore...
}
}
}
session.close();
| public void | testIntegrityViolation()
if ( getDialect() instanceof MySQLMyISAMDialect ) {
reportSkip( "MySQL (ISAM) does not support FK violation checking", "exception conversion" );
return;
}
SQLExceptionConverter converter = getDialect().buildSQLExceptionConverter();
Session session = openSession();
session.beginTransaction();
Connection connection = session.connection();
// Attempt to insert some bad values into the T_MEMBERSHIP table that should
// result in a constraint violation
PreparedStatement ps = null;
try {
ps = connection.prepareStatement("INSERT INTO T_MEMBERSHIP (user_id, group_id) VALUES (?, ?)");
ps.setLong(1, 52134241); // Non-existent user_id
ps.setLong(2, 5342); // Non-existent group_id
ps.executeUpdate();
fail("INSERT should have failed");
}
catch(SQLException sqle) {
JDBCExceptionReporter.logExceptions(sqle, "Just output!!!!");
JDBCException jdbcException = converter.convert(sqle, null, null);
assertEquals( "Bad conversion [" + sqle.getMessage() + "]", ConstraintViolationException.class , jdbcException.getClass() );
ConstraintViolationException ex = (ConstraintViolationException) jdbcException;
System.out.println("Violated constraint name: " + ex.getConstraintName());
}
finally {
if ( ps != null ) {
try {
ps.close();
}
catch( Throwable ignore ) {
// ignore...
}
}
}
session.getTransaction().rollback();
session.close();
|
|