📄 sqlloadertest.java
字号:
assertNotNull(list);
assertEquals(1, list.size());
session.connection().commit();
session.close();
}
public void testDoubleAliasing() throws HibernateException, SQLException {
Session session = openSession();
session.delete("from A");
A savedA = new A();
savedA.setName("Max");
session.save(savedA);
B savedB = new B();
session.save(savedB);
session.flush();
int count = session.createQuery("from A").list().size();
session.close();
session = openSession();
Query query = session.createSQLQuery("select a.identifier_column as {a1.id}, a.clazz_discriminata as {a1.class}, a.count_ as {a1.count}, a.name as {a1.name} " +
", b.identifier_column as {a2.id}, b.clazz_discriminata as {a2.class}, b.count_ as {a2.count}, b.name as {a2.name} " +
" from TA a, TA b" +
" where a.identifier_column = b.identifier_column", new String[] {"a1", "a2" }, new Class[] {A.class, A.class});
List list = query.list();
assertNotNull(list);
assertEquals(2, list.size());
session.connection().commit();
session.close();
}
// TODO: compositeid's - how ? (SingleSeveral.hbm.xml test)
public void testEmbeddedCompositeProperties() throws HibernateException, SQLException {
Session session = openSession();
Single s = new Single();
s.setId("my id");
s.setString("string 1");
session.save(s);
session.flush();
session.connection().commit();
session.clear();
Query query = session.createSQLQuery("select {sing.*} from Single {sing}", "sing", Single.class);
List list = query.list();
assertTrue(list.size()==1);
session.clear();
query = session.createSQLQuery("select {sing.*} from Single {sing} where sing.id = ?", "sing", Single.class);
query.setString(0, "my id");
list = query.list();
assertTrue(list.size()==1);
session.clear();
query = session.createSQLQuery("select s.id as {sing.id}, s.string_ as {sing.string}, s.prop as {sing.prop} from Single s where s.id = ?", "sing", Single.class);
query.setString(0, "my id");
list = query.list();
assertTrue(list.size()==1);
session.clear();
query = session.createSQLQuery("select s.id as {sing.id}, s.string_ as {sing.string}, s.prop as {sing.prop} from Single s where s.id = ?", "sing", Single.class);
query.setString(0, "my id");
list = query.list();
assertTrue(list.size()==1);
session.connection().commit();
session.close();
}
public void testReturnPropertyComponentRename() throws HibernateException, SQLException {
Session session = openSession();
Componentizable componentizable = setupComponentData(session);
Query namedQuery = session.getNamedQuery("queryComponentWithOtherColumn");
List list = namedQuery.list();
assertEquals(1, list.size());
assertEquals( "flakky comp", ( (Componentizable) list.get(0) ).getComponent().getName() );
session.clear();
session.delete(componentizable);
session.flush();
session.connection().commit();
session.close();
}
public void testComponentStar() throws HibernateException, SQLException {
componentTest("select {comp.*} from Componentizable comp");
}
public void testComponentNoStar() throws HibernateException, SQLException {
componentTest("select comp.id as {comp.id}, comp.nickName as {comp.nickName}, comp.name as {comp.component.name}, comp.subName as {comp.component.subComponent.subName}, comp.subName1 as {comp.component.subComponent.subName1} from Componentizable comp");
}
private void componentTest(String sql) throws SQLException {
Session session = openSession();
Componentizable c = setupComponentData( session );
Query q = session.createSQLQuery(sql, "comp", Componentizable.class);
List list = q.list();
assertEquals(list.size(),1);
Componentizable co = (Componentizable) list.get(0);
assertEquals(c.getNickName(), co.getNickName());
assertEquals(c.getComponent().getName(), co.getComponent().getName());
assertEquals(c.getComponent().getSubComponent().getSubName(), co.getComponent().getSubComponent().getSubName());
session.delete(co);
session.flush();
session.connection().commit();
session.close();
}
private Componentizable setupComponentData(Session session) throws SQLException {
Componentizable c = new Componentizable();
c.setNickName("Flacky");
Component component = new Component();
component.setName("flakky comp");
SubComponent subComponent = new SubComponent();
subComponent.setSubName("subway");
component.setSubComponent(subComponent);
c.setComponent(component);
session.save(c);
session.flush();
session.connection().commit();
session.clear();
return c;
}
public void testFindSimpleBySQL() throws Exception {
if ( getDialect() instanceof MySQLDialect ) return;
Session session = openSession();
Category s = new Category();
s.setName(String.valueOf(nextLong++));
session.save(s);
session.flush();
Query query = session.createSQLQuery("select s.category_key_col as {category.id}, s.name as {category.name}, s.\"assign-able-id\" as {category.assignable} from {category} s", "category", Category.class);
List list = query.list();
assertNotNull(list);
assertTrue(list.size() > 0);
assertTrue(list.get(0) instanceof Category);
session.connection().commit();
session.close();
// How do we handle objects with composite id's ? (such as Single)
}
public void testFindBySQLSimpleByDiffSessions() throws Exception {
Session session = openSession();
Category s = new Category();
s.setName(String.valueOf(nextLong++));
session.save(s);
session.flush();
session.connection().commit();
session.close();
if ( getDialect() instanceof MySQLDialect ) return;
session = openSession();
Query query = session.createSQLQuery("select s.category_key_col as {category.id}, s.name as {category.name}, s.\"assign-able-id\" as {category.assignable} from {category} s", "category", Category.class);
List list = query.list();
assertNotNull(list);
assertTrue(list.size() > 0);
assertTrue(list.get(0) instanceof Category);
// How do we handle objects that does not have id property (such as Simple ?)
// How do we handle objects with composite id's ? (such as Single)
session.connection().commit();
session.close();
}
public void testFindBySQLDiscriminatedSameSession() throws Exception {
Session session = openSession();
session.delete("from A");
A savedA = new A();
session.save(savedA);
B savedB = new B();
session.save(savedB);
session.flush();
Query query = session.createSQLQuery("select identifier_column as {a.id}, clazz_discriminata as {a.class}, name as {a.name}, count_ as {a.count} from TA {a}", "a", A.class);
List list = query.list();
assertNotNull(list);
assertEquals(2, list.size());
A a1 = (A) list.get(0);
A a2 = (A) list.get(1);
assertTrue((a2 instanceof B) || (a1 instanceof B));
assertFalse(a1 instanceof B && a2 instanceof B);
if (a1 instanceof B) {
assertSame(a1, savedB);
assertSame(a2, savedA);
}
else {
assertSame(a2, savedB);
assertSame(a1, savedA);
}
session.clear();
List list2 = session.getNamedQuery("propertyResultDiscriminator").list();
assertEquals(2, list2.size());
session.connection().commit();
session.close();
}
public void testFindBySQLDiscriminatedDiffSession() throws Exception {
Session session = openSession();
session.delete("from A");
A savedA = new A();
session.save(savedA);
B savedB = new B();
session.save(savedB);
session.flush();
int count = session.createQuery("from A").list().size();
session.close();
session = openSession();
Query query = session.createSQLQuery("select identifier_column as {a.id}, clazz_discriminata as {a.class}, count_ as {a.count}, name as {a.name} from TA", "a", A.class);
List list = query.list();
assertNotNull(list);
assertEquals(count, list.size());
session.connection().commit();
session.close();
}
public void testCompositeIdId() throws HibernateException, SQLException {
// issue HHH-21
Session s = openSession();
CompositeIdId id = new CompositeIdId();
id.setName("Max");
id.setSystem("c64");
id.setId("games");
s.save(id);
s.flush();
s.connection().commit();
s.close();
s = openSession();
// having a composite id with one property named id works since the map used by sqlloader to map names to properties handles it.
Query query = s.createSQLQuery("select system as {c.system}, id as {c.id}, name as {c.name}, foo as {c.composite.foo}, bar as {c.composite.bar} from CompositeIdId where system=? and id=?", "c", CompositeIdId.class);
query.setString(0, "c64");
query.setString(1, "games");
CompositeIdId id2 = (CompositeIdId) query.uniqueResult();
check(id, id2);
s.flush();
s.connection().commit();
s.close();
s = openSession();
CompositeIdId useForGet = new CompositeIdId();
useForGet.setSystem("c64");
useForGet.setId("games");
// this doesn't work since the verification does not take column span into respect!
CompositeIdId getted = (CompositeIdId) s.get(CompositeIdId.class, useForGet);
check(id,getted);
s.connection().commit();
s.close();
}
/**
* @param id
* @param id2
*/
private void check(CompositeIdId id, CompositeIdId id2) {
assertEquals(id,id2);
assertEquals(id.getName(), id2.getName());
assertEquals(id.getId(), id2.getId());
assertEquals(id.getSystem(), id2.getSystem());
}
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 TestSuite(SQLLoaderTest.class);
}
public static void main(String[] args) throws Exception {
TestRunner.run( suite() );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -