⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlexceptionconversiontest.java

📁 hibernate 开源框架的代码 jar包希望大家能喜欢
💻 JAVA
字号:
// $Id: SQLExceptionConversionTest.java 11339 2007-03-23 12:51:38Z steve.ebersole@jboss.com $package org.hibernate.test.exception;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLException;import junit.framework.Test;import org.hibernate.JDBCException;import org.hibernate.Session;import org.hibernate.dialect.MySQLMyISAMDialect;import org.hibernate.exception.ConstraintViolationException;import org.hibernate.exception.SQLExceptionConverter;import org.hibernate.exception.SQLGrammarException;import org.hibernate.junit.functional.FunctionalTestCase;import org.hibernate.junit.functional.FunctionalTestClassTestSuite;import org.hibernate.util.JDBCExceptionReporter;/** * Implementation of SQLExceptionConversionTest. * * @author Steve Ebersole */public class SQLExceptionConversionTest extends FunctionalTestCase {	public SQLExceptionConversionTest(String name) {		super(name);	}	public String[] getMappings() {		return new String[] {"exception/User.hbm.xml", "exception/Group.hbm.xml"};	}	public static Test suite() {		return new FunctionalTestClassTestSuite(SQLExceptionConversionTest.class);	}	public void testIntegrityViolation() throws Exception {		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();	}	public void testBadGrammar() throws Exception {		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();	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -