📄 sqlloadertest.java
字号:
//$Id: SQLLoaderTest.java 11383 2007-04-02 15:34:02Z steve.ebersole@jboss.com $package org.hibernate.test.legacy;import java.sql.SQLException;import java.util.ArrayList;import java.util.Date;import java.util.List;import junit.framework.Test;import org.hibernate.HibernateException;import org.hibernate.Query;import org.hibernate.Transaction;import org.hibernate.classic.Session;import org.hibernate.dialect.HSQLDialect;import org.hibernate.dialect.MySQLDialect;import org.hibernate.dialect.Oracle9Dialect;import org.hibernate.dialect.OracleDialect;import org.hibernate.dialect.PostgreSQLDialect;import org.hibernate.dialect.TimesTenDialect;import org.hibernate.junit.functional.FunctionalTestClassTestSuite;public class SQLLoaderTest extends LegacyTestCase { static int nextInt = 1; static long nextLong = 1; public SQLLoaderTest(String arg) { super(arg); } public String[] getMappings() { return new String[] { "legacy/ABC.hbm.xml", "legacy/Category.hbm.xml", "legacy/Simple.hbm.xml", "legacy/Fo.hbm.xml", "legacy/SingleSeveral.hbm.xml", "legacy/Componentizable.hbm.xml", "legacy/CompositeIdId.hbm.xml" }; } public static Test suite() { return new FunctionalTestClassTestSuite( SQLLoaderTest.class ); } public void testTS() throws Exception { if (getDialect() instanceof Oracle9Dialect) return; Session session = openSession(); Transaction txn = session.beginTransaction(); Simple sim = new Simple(); sim.setDate( new Date() ); session.save( sim, new Long(1) ); Query q = session.createSQLQuery("select {sim.*} from Simple {sim} where {sim}.date_ = ?", "sim", Simple.class); q.setTimestamp( 0, sim.getDate() ); assertTrue ( q.list().size()==1 ); session.delete(sim); txn.commit(); session.close(); } public void testFindBySQLStar() throws HibernateException, SQLException { Session session = openSession(); session.delete("from Assignable"); session.delete("from Category"); session.delete("from Simple"); session.delete("from A"); Category s = new Category(); s.setName(String.valueOf(nextLong++)); session.save(s); Simple simple = new Simple(); simple.init(); session.save(simple, new Long(nextLong++)); A a = new A(); session.save(a); B b = new B(); session.save(b); session.flush(); session.createSQLQuery("select {category.*} from category {category}", "category", Category.class).list(); session.createSQLQuery("select {simple.*} from Simple {simple}", "simple", Simple.class).list(); session.createSQLQuery("select {a.*} from TA {a}", "a", A.class).list(); session.connection().commit(); session.close(); } public void testFindBySQLProperties() throws HibernateException, SQLException { Session session = openSession(); session.delete("from Category"); Category s = new Category(); s.setName(String.valueOf(nextLong++)); session.save(s); s = new Category(); s.setName("WannaBeFound"); session.flush(); Query query = session.createSQLQuery("select {category.*} from category {category} where {category}.name = :name", "category", Category.class); query.setProperties(s); //query.setParameter("name", s.getName()); query.list(); query = session.createSQLQuery("select {category.*} from category {category} where {category}.name in (:names)", "category", Category.class); String[] str = new String[] { "WannaBeFound", "NotThere" }; query.setParameterList("names", str); query.uniqueResult(); session.connection().commit(); session.close(); } public void testFindBySQLAssociatedObjects() throws HibernateException, SQLException { Session s = openSession(); s.delete("from Assignable"); s.delete("from Category"); Category c = new Category(); c.setName("NAME"); Assignable assn = new Assignable(); assn.setId("i.d."); List l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); s.connection().commit(); s.close(); s = openSession(); List list = s.createSQLQuery("select {category.*} from category {category}", "category", Category.class).list(); list.get(0); s.connection().commit(); s.close(); if ( getDialect() instanceof MySQLDialect ) return; if ( getDialect() instanceof OracleDialect ) return; // todo : this fails on Oracle8 also s = openSession(); Query query = s.getNamedQuery("namedsql"); assertNotNull(query); list = query.list(); assertNotNull(list); Object[] values = (Object[]) list.get(0); assertNotNull(values[0]); assertNotNull(values[1]); assertTrue("wrong type: " + values[0].getClass(), values[0] instanceof Category); assertTrue("wrong type: " + values[1].getClass(), values[1] instanceof Assignable); s.connection().commit(); s.close(); } public void testPropertyResultSQL() throws HibernateException, SQLException { if ( getDialect() instanceof MySQLDialect ) return; Session s = openSession(); s.delete("from Assignable"); s.delete("from Category"); Category c = new Category(); c.setName("NAME"); Assignable assn = new Assignable(); assn.setId("i.d."); List l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); s.connection().commit(); s.close(); s = openSession(); Query query = s.getNamedQuery("nonaliasedsql"); assertNotNull(query); List list = query.list(); assertNotNull(list); assertTrue(list.get(0) instanceof Category); s.connection().commit(); s.close(); } public void testFindBySQLMultipleObject() throws HibernateException, SQLException { Session s = openSession(); s.delete("from Assignable"); s.delete("from Category"); s.flush(); s.connection().commit(); s.close(); s = openSession(); Category c = new Category(); c.setName("NAME"); Assignable assn = new Assignable(); assn.setId("i.d."); List l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); c = new Category(); c.setName("NAME2"); assn = new Assignable(); assn.setId("i.d.2"); l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); assn = new Assignable(); assn.setId("i.d.3"); s.save(assn); s.flush(); s.connection().commit(); s.close(); if ( getDialect() instanceof MySQLDialect ) return; s = openSession(); List list = s.createSQLQuery("select {category.*}, {assignable.*} from category {category}, \"assign-able\" {assignable}", new String[] { "category", "assignable" }, new Class[] { Category.class, Assignable.class }).list(); assertTrue(list.size() == 6); // crossproduct of 2 categories x 3 assignables assertTrue(list.get(0) instanceof Object[]); s.connection().commit(); s.close(); } public void testFindBySQLParameters() throws HibernateException, SQLException { Session s = openSession(); s.delete("from Assignable"); s.delete("from Category"); s.flush(); s.connection().commit(); s.close(); s = openSession(); Category c = new Category(); c.setName("Good"); Assignable assn = new Assignable(); assn.setId("i.d."); List l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); c = new Category(); c.setName("Best"); assn = new Assignable(); assn.setId("i.d.2"); l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); c = new Category(); c.setName("Better"); assn = new Assignable(); assn.setId("i.d.7"); l = new ArrayList(); l.add(c); assn.setCategories(l); c.setAssignable(assn); s.save(assn); s.flush(); assn = new Assignable(); assn.setId("i.d.3"); s.save(assn); s.flush(); s.connection().commit(); s.close(); s = openSession(); Query basicParam = s.createSQLQuery("select {category.*} from category {category} where {category}.name = 'Best'", "category", Category.class); List list = basicParam.list(); assertEquals(1, list.size()); Query unnamedParam = s.createSQLQuery("select {category.*} from category {category} where {category}.name = ? or {category}.name = ?", "category", Category.class); unnamedParam.setString(0, "Good"); unnamedParam.setString(1, "Best"); list = unnamedParam.list(); assertEquals(2, list.size()); Query namedParam = s.createSQLQuery("select {category.*} from category {category} where ({category}.name=:firstCat or {category}.name=:secondCat)", "category", Category.class); namedParam.setString("firstCat", "Better"); namedParam.setString("secondCat", "Best"); list = namedParam.list(); assertEquals(2, list.size()); s.connection().commit(); s.close(); } public void testEscapedJDBC() throws HibernateException, SQLException { if ( getDialect() instanceof HSQLDialect || getDialect() instanceof PostgreSQLDialect ) return; Session session = openSession(); session.delete("from A"); A savedA = new A(); savedA.setName("Max"); session.save(savedA); B savedB = new B(); session.save(savedB);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -