referencing dynamic component property from an alias causes invalid sql
Description
Activity
WilliamDMay 4, 2005 at 3:05 AM
I apologize if my last comment sounded snotty. That was not my intention. I'm sorry if I am being dense, but in the docs it says that a component and a dynamic component can be treated as "conceptually" the same thing.
I have tried to debug this but it is way over my head. I will continue looking, but if you could review this revised test case. Please note that the only query marked as "this one fails" is the only query that fails with an Exception origionating with a column not found.
The exception seems to suggest that it doesn't join on the N table and properly associate the column with the correct table. When I traced "from N where b = ?" the inner join was correctly performed. Also when I traced down for "from N as n where n.dyn.a = ?" the inner join was correctly performed. Only "from N as n where n.dyn.b = ?" causes the failure.
Again, I sincerly apologize if I sounded like an ass.
Testcase:
package org.hibernate.test.component;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.hibernate.Session;
import org.hibernate.test.TestCase;
public class DynamicComponentTest extends TestCase {
public DynamicComponentTest(String name) {
super(name);
}
public void testDynamicComponent() throws Exception {
Session session = openSession();
M m = new M();
Map mValues = new HashMap();
mValues.put("a", "ma");
m.setDyn(mValues);
session.save(m);
N n = new N();
Map nValues = new HashMap();
nValues.put("a", "na");
nValues.put("b", "nb");
n.setDyn(nValues);
session.save;
List list = session.createQuery("from M as m where m.dyn.a = ?")
.setString(0, "ma")
.list();
assertEquals(1, list.size());
assertTrue(list.contains(m));
list = session.createQuery("from M as m where a = ?")
.setString(0, "ma")
.list();
assertEquals(1, list.size());
assertTrue(list.contains(m));
list = session.createQuery("from N as n where n.dyn.a = ?")
.setString(0, "na")
.list();
assertEquals(1, list.size());
assertTrue(list.contains);
list = session.createQuery("from N where b = ?")
.setString(0, "nb")
.list();
assertEquals(1, list.size());
assertTrue(list.contains);
// this is the only one that fails with the SQL exception
list = session.createQuery("from N as n where n.dyn.b = ?")
.setString(0, "nb")
.list();
assertEquals(1, list.size());
assertTrue(list.contains);
session.delete(m);
session.delete;
session.close();
}
protected String[] getMappings() {
return new String[] { "component/MN.hbm.xml" };
}
}
Mapping File:
<hibernate-mapping package="org.hibernate.test.component">
<class name="M">
<id name="id" type="string">
<generator class="uuid"/>
</id>
<dynamic-component name="dyn">
<property name="a" type="string"/>
</dynamic-component>
</class>
<joined-subclass name="N" extends="M">
<key column="M"/>
<dynamic-component name="dyn">
<property name="b" type="string"/>
</dynamic-component>
</joined-subclass>
</hibernate-mapping>
Classes:
package org.hibernate.test.component;
import java.io.Serializable;
import java.util.Map;
public class M {
private Serializable id;
private Map dyn;
public M() {
super();
}
public Serializable getId() {
return id;
}
public void setId(Serializable id) {
this.id = id;
}
public Map getDyn() {
return dyn;
}
public void setDyn(Map dyn) {
this.dyn = dyn;
}
public boolean equals(Object obj) {
if (!(obj instanceof M)) return false;
M that = (M) obj;
return this.dyn == null ? that.dyn == null : this.dyn.equals(that.dyn);
}
public int hashCode() {
return this.dyn == null ? super.hashCode() : this.dyn.hashCode();
}
}
package org.hibernate.test.component;
public class N extends M {
public N() {
super();
}
public boolean equals(Object obj) {
if (!(obj instanceof N)) return false;
return super.equals(obj);
}
}
Log:
21:00:16,152 INFO Environment:464 - Hibernate 3.0.2
21:00:16,181 INFO Environment:482 - loaded properties from resource hibernate.properties: {hibernate.order_updates=true, hibernate.default_batch_fetch_size=8, hibernate.connection.driver_class=org.hsqldb.jdbcDriver, hibernate.cglib.use_reflection_optimizer=true, hibernate.cache.provider_class=org.hibernate.cache.HashtableCacheProvider, hibernate.max_fetch_depth=1, hibernate.dialect=org.hibernate.dialect.HSQLDialect, hibernate.jdbc.use_streams_for_binary=true, hibernate.query.substitutions=true 1, false 0, yes 'Y', no 'N', hibernate.proxool.pool_alias=pool1, hibernate.connection.username=sa, hibernate.cache.region_prefix=hibernate.test, hibernate.connection.url=jdbc:hsqldb:., hibernate.connection.password=****, hibernate.jdbc.batch_versioned_data=true, hibernate.connection.pool_size=1}
21:00:16,184 INFO Environment:509 - using java.io streams to persist binary types
21:00:16,184 INFO Environment:510 - using CGLIB reflection optimizer
21:00:16,186 INFO Environment:540 - using JDK 1.4 java.sql.Timestamp handling
21:00:16,234 INFO Configuration:424 - Mapping resource: org/hibernate/test/component/MN.hbm.xml
21:00:16,614 INFO HbmBinder:259 - Mapping class: org.hibernate.test.component.M -> M
21:00:16,666 INFO HbmBinder:780 - Mapping joined-subclass: org.hibernate.test.component.N -> N
21:00:16,686 INFO Dialect:92 - Using dialect: org.hibernate.dialect.HSQLDialect
21:00:16,725 INFO Configuration:852 - processing extends queue
21:00:16,725 INFO Configuration:856 - processing collection mappings
21:00:16,726 INFO Configuration:865 - processing association property references
21:00:16,726 INFO Configuration:894 - processing foreign key constraints
21:00:16,782 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!)
21:00:16,787 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1
21:00:16,787 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
21:00:16,790 INFO DriverManagerConnectionProvider:80 - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:.
21:00:16,791 INFO DriverManagerConnectionProvider:86 - connection properties: {user=sa, password=****}
21:00:17,104 INFO SettingsFactory:72 - RDBMS: HSQL Database Engine, version: 1.7.3
21:00:17,105 INFO SettingsFactory:73 - JDBC driver: HSQL Database Engine Driver, version: 1.7.3
21:00:17,109 INFO Dialect:92 - Using dialect: org.hibernate.dialect.HSQLDialect
21:00:17,110 INFO SettingsFactory:123 - JDBC batch size: 15
21:00:17,111 INFO SettingsFactory:126 - JDBC batch updates for versioned data: enabled
21:00:17,112 INFO SettingsFactory:131 - Scrollable result sets: enabled
21:00:17,112 INFO SettingsFactory:139 - JDBC3 getGeneratedKeys(): disabled
21:00:17,113 INFO SettingsFactory:147 - Connection release mode: null
21:00:17,114 INFO SettingsFactory:165 - Maximum outer join fetch depth: 1
21:00:17,114 INFO SettingsFactory:168 - Default batch fetch size: 8
21:00:17,114 INFO SettingsFactory:172 - Generate SQL with comments: disabled
21:00:17,115 INFO SettingsFactory:176 - Order SQL updates by primary key: enabled
21:00:17,115 INFO SettingsFactory:314 - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
21:00:17,126 INFO ASTQueryTranslatorFactory:21 - Using ASTQueryTranslatorFactory
21:00:17,128 INFO SettingsFactory:184 - Query language substitutions: {no='N', true=1, yes='Y', false=0}
21:00:17,130 INFO TransactionFactoryFactory:31 - Using default transaction strategy (direct JDBC transactions)
21:00:17,133 INFO TransactionManagerLookupFactory:33 - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
21:00:17,133 INFO SettingsFactory:193 - Automatic flush during beforeCompletion(): disabled
21:00:17,134 INFO SettingsFactory:197 - Automatic session close at end of transaction: disabled
21:00:17,134 INFO SettingsFactory:203 - Second-level cache: enabled
21:00:17,135 INFO SettingsFactory:207 - Query cache: disabled
21:00:17,135 INFO SettingsFactory:301 - Cache provider: org.hibernate.cache.HashtableCacheProvider
21:00:17,136 INFO SettingsFactory:222 - Optimize cache for minimal puts: disabled
21:00:17,137 INFO SettingsFactory:227 - Cache region prefix: hibernate.test
21:00:17,137 INFO SettingsFactory:231 - Structured second-level cache entries: enabled
21:00:17,145 INFO SettingsFactory:255 - Statistics: disabled
21:00:17,145 INFO SettingsFactory:259 - Deleted entity synthetic identifier rollback: disabled
21:00:17,146 INFO SettingsFactory:273 - Default entity-mode: pojo
21:00:17,260 INFO SessionFactoryImpl:150 - building session factory
21:00:17,471 INFO SessionFactoryObjectFactory:82 - Not binding factory to JNDI, no JNDI name configured
21:00:17,475 INFO Dialect:92 - Using dialect: org.hibernate.dialect.HSQLDialect
21:00:17,478 INFO Configuration:852 - processing extends queue
21:00:17,479 INFO Configuration:856 - processing collection mappings
21:00:17,480 INFO Configuration:865 - processing association property references
21:00:17,482 INFO Configuration:894 - processing foreign key constraints
21:00:17,486 INFO Configuration:852 - processing extends queue
21:00:17,487 INFO Configuration:856 - processing collection mappings
21:00:17,487 INFO Configuration:865 - processing association property references
21:00:17,487 INFO Configuration:894 - processing foreign key constraints
21:00:17,488 INFO SchemaExport:113 - Running hbm2ddl schema export
21:00:17,488 INFO SchemaExport:129 - exporting generated schema to database
21:00:17,489 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!)
21:00:17,489 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1
21:00:17,491 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
21:00:17,491 INFO DriverManagerConnectionProvider:80 - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:.
21:00:17,492 INFO DriverManagerConnectionProvider:86 - connection properties: {user=sa, password=****}
21:00:17,492 DEBUG SchemaExport:143 - alter table N drop constraint FK4E45136813
21:00:17,494 DEBUG SchemaExport:149 - Unsuccessful: alter table N drop constraint FK4E45136813
21:00:17,494 DEBUG SchemaExport:150 - Table not found: N in statement [alter table N]
21:00:17,494 DEBUG SchemaExport:143 - drop table M if exists
21:00:17,494 DEBUG SchemaExport:143 - drop table N if exists
21:00:17,497 DEBUG SchemaExport:161 - create table M (
id varchar(255) not null,
a varchar(255),
primary key (id)
)
21:00:17,501 DEBUG SchemaExport:161 - create table N (
M varchar(255) not null,
b varchar(255),
primary key (M)
)
21:00:17,502 DEBUG SchemaExport:161 - alter table N add constraint FK4E45136813 foreign key (M) references M
21:00:17,506 INFO SchemaExport:173 - schema export complete
21:00:17,526 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:hsqldb:.
21:00:17,527 INFO Dialect:92 - Using dialect: org.hibernate.dialect.HSQLDialect
21:00:17,528 INFO Configuration:852 - processing extends queue
21:00:17,528 INFO Configuration:856 - processing collection mappings
21:00:17,528 INFO Configuration:865 - processing association property references
21:00:17,529 INFO Configuration:894 - processing foreign key constraints
21:00:17,529 INFO Configuration:852 - processing extends queue
21:00:17,530 INFO Configuration:856 - processing collection mappings
21:00:17,530 INFO Configuration:865 - processing association property references
21:00:17,530 INFO Configuration:894 - processing foreign key constraints
21:00:17,532 INFO SessionFactoryImpl:376 - Checking 0 named queries
21:00:17,801 WARN JDBCExceptionReporter:71 - SQL Error: -28, SQLState: S0022
21:00:17,802 ERROR JDBCExceptionReporter:72 - Column not found: N0_1_.B in statement [select n0_.M as id, n0_1_.a as a0_, n0_.b as b1_ from N n0_ inner join M n0_1_ on n0_.M=n0_1_.id where n0_1_.b=?]
21:00:17,803 WARN JDBCExceptionReporter:71 - SQL Error: -28, SQLState: S0022
21:00:17,804 ERROR JDBCExceptionReporter:72 - Column not found: N0_1_.B in statement [select n0_.M as id, n0_1_.a as a0_, n0_.b as b1_ from N n0_ inner join M n0_1_ on n0_.M=n0_1_.id where n0_1_.b=?]
21:00:17,805 INFO SessionFactoryImpl:758 - closing
21:00:17,805 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:hsqldb:.
21:00:17,806 INFO SchemaExport:113 - Running hbm2ddl schema export
21:00:17,874 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:hsqldb:.
21:00:17,875 INFO SchemaExport:129 - exporting generated schema to database
21:00:17,875 INFO DriverManagerConnectionProvider:41 - Using Hibernate built-in connection pool (not for production use!)
21:00:17,876 INFO DriverManagerConnectionProvider:42 - Hibernate connection pool size: 1
21:00:17,876 INFO DriverManagerConnectionProvider:45 - autocommit mode: false
21:00:17,876 INFO DriverManagerConnectionProvider:80 - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:.
21:00:17,877 INFO DriverManagerConnectionProvider:86 - connection properties: {user=sa, password=****}
21:00:17,877 DEBUG SchemaExport:143 - alter table N drop constraint FK4E45136813
21:00:17,878 DEBUG SchemaExport:143 - drop table M if exists
21:00:17,879 DEBUG SchemaExport:143 - drop table N if exists
21:00:17,879 INFO SchemaExport:173 - schema export complete
21:00:17,880 INFO DriverManagerConnectionProvider:147 - cleaning up connection pool: jdbc:hsqldb:.
GavinGMay 3, 2005 at 11:31 PM
Oh, you're right, the query is fine.
Anyway, if you really believe there is a bug, please produce a patch. Thanks.
WilliamDMay 3, 2005 at 11:24 PM
I didn't know that a dynamic-component was considered a collection value type. I'm searching the docs on how to do this correctly. However, why does "from BB as b where b.values.field1 = ?" work? But form BB as b where b.values.field3 = ?" not work? I assumed that the bug was because the super class mapping BA hid the BB mapping when it was aliased because "from BB as b where field3 = ?" works.
GavinGMay 3, 2005 at 10:50 PM
It is not supported to navigate a collection-valued path expression in HQL. Please refer to the docs and HiA for supported HQL syntax.
Given the following mappings:
<class name="eg.entitynames.A">
<id name="id">
<generator class="uuid"/>
</id>
<property name="commonProperty" type="string"/>
</class>
<joined-subclass name="eg.entitynames.B" extends="eg.entitynames.A" entity-name="BA">
<key column="A"/>
<dynamic-component name="values">
<property name="field0" type="string"/>
<property name="field1" type="string"/>
</dynamic-component>
</joined-subclass>
<joined-subclass name="eg.entitynames.B" extends="BA" entity-name="BB">
<key column="BB"/>
<dynamic-component name="values">
<property name="field2" type="string"/>
<property name="field3" type="string"/>
</dynamic-component>
</joined-subclass>
And the following class definitions:
public class A {
private Serializable id;
private Integer version;
private String commonProperty;
public A() {
super();
}
public Serializable getId() {
return this.id;
}
void setId(Serializable id) {
this.id = id;
}
public Integer getVersion() {
return this.version;
}
void setVersion(Integer version) {
this.version = version;
}
public String getCommonProperty() {
return this.commonProperty;
}
public void setCommonProperty(String commonProperty) {
this.commonProperty = commonProperty;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof A)) return false;
A that = (A) obj;
return new EqualsBuilder()
.append(this.id, that.id)
.append(this.commonProperty, that.commonProperty)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(this.id)
.append(this.commonProperty)
.toHashCode();
}
}
public class B extends A {
private Map<String,Object> values;
public Map<String, Object> getValues() {
if (this.values == null)
this.values = new HashMap<String,Object>();
return this.values;
}
void setValues(Map<String, Object> values) {
this.values = values;
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof B)) return false;
B that = (B) obj;
return new EqualsBuilder()
.appendSuper(super.equals(obj))
.append(this.values, that.values)
.isEquals();
}
@Override
public int hashCode() {
return new HashCodeBuilder()
.appendSuper(super.hashCode())
.append(this.values)
.toHashCode();
}
}
the following hql will work
from BA as b where b.values.field1 = 'value1'
from BB as b where b.values.field1 = 'value1'
from BB where field3 = 'value5'
but the follow hql produces the following stack trace
from BB as b where b.values.field3 = 'value5'
Stack Trace:
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:70)
at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at org.hibernate.loader.Loader.doList(Loader.java:1560)
at org.hibernate.loader.Loader.list(Loader.java:1540)
at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:375)
at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:271)
at org.hibernate.impl.SessionImpl.list(SessionImpl.java:791)
at org.hibernate.impl.QueryImpl.list(QueryImpl.java:74)
at eg.entitynames.InheritedDynamicComponentBugTest.testInherentenceFromDynamicParent(InheritedDynamicComponentBugTest.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:474)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:342)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:194)
Caused by: java.sql.SQLException: Column not found: BB0_1_.FIELD3 in statement [select bb0_.BB as id, bb0_2_.commonProperty as commonPr2_0_, bb0_1_.field0 as field2_1_, bb0_1_.field1 as field3_1_, bb0_.field2 as field2_2_, bb0_.field3 as field3_2_ from BB bb0_ inner join BA bb0_1_ on bb0_.BB=bb0_1_.A inner join A bb0_2_ on bb0_.BB=bb0_2_.id where bb0_1_.field3='value5']
at org.hsqldb.jdbc.jdbcUtil.throwError(Unknown Source)
at org.hsqldb.jdbc.jdbcPreparedStatement.<init>(Unknown Source)
at org.hsqldb.jdbc.jdbcConnection.prepareStatement(Unknown Source)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:383)
at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:321)
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:86)
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1125)
at org.hibernate.loader.Loader.doQuery(Loader.java:369)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:210)
at org.hibernate.loader.Loader.doList(Loader.java:1557)
... 21 more
Log Output:
INFO - Hibernate 3.0.2
INFO - hibernate.properties not found
INFO - using CGLIB reflection optimizer
INFO - using JDK 1.4 java.sql.Timestamp handling
INFO - Mapping class: eg.entitynames.A -> A
INFO - Mapping joined-subclass: BA -> BA
INFO - Mapping joined-subclass: BB -> BB
INFO - Using dialect: org.hibernate.dialect.HSQLDialect
INFO - processing extends queue
INFO - processing collection mappings
INFO - processing association property references
INFO - processing foreign key constraints
INFO - processing extends queue
INFO - processing collection mappings
INFO - processing association property references
INFO - processing foreign key constraints
INFO - Running hbm2ddl schema export
INFO - exporting generated schema to database
INFO - Using Hibernate built-in connection pool (not for production use!)
INFO - Hibernate connection pool size: 20
INFO - autocommit mode: false
INFO - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:.
INFO - connection properties: {user=sa, password=****}
alter table BA drop constraint FK83F7C8935ED
alter table BB drop constraint FK840147F
drop table A if exists
drop table BA if exists
drop table BB if exists
create table A (
id varbinary(255) not null,
commonProperty varchar(255),
primary key (id)
)
create table BA (
A varbinary(255) not null,
field0 varchar(255),
field1 varchar(255),
primary key (A)
)
create table BB (
BB varbinary(255) not null,
field2 varchar(255),
field3 varchar(255),
primary key (BB)
)
alter table BA add constraint FK83F7C8935ED foreign key (A) references A
alter table BB add constraint FK840147F foreign key (BB) references BA
INFO - schema export complete
INFO - cleaning up connection pool: jdbc:hsqldb:.
INFO - processing extends queue
INFO - processing collection mappings
INFO - processing association property references
INFO - processing foreign key constraints
INFO - Using Hibernate built-in connection pool (not for production use!)
INFO - Hibernate connection pool size: 20
INFO - autocommit mode: false
INFO - using driver: org.hsqldb.jdbcDriver at URL: jdbc:hsqldb:.
INFO - connection properties: {user=sa, password=****}
INFO - RDBMS: HSQL Database Engine, version: 1.7.2
INFO - JDBC driver: HSQL Database Engine Driver, version: 1.7.2
INFO - Using dialect: org.hibernate.dialect.HSQLDialect
INFO - JDBC batch size: 15
INFO - JDBC batch updates for versioned data: disabled
INFO - Scrollable result sets: enabled
INFO - JDBC3 getGeneratedKeys(): disabled
INFO - Aggressive release : disabled
INFO - Default batch fetch size: 1
INFO - Generate SQL with comments: disabled
INFO - Order SQL updates by primary key: disabled
INFO - Query translator: org.hibernate.hql.ast.ASTQueryTranslatorFactory
INFO - Using ASTQueryTranslatorFactory
INFO - Query language substitutions: {}
INFO - Using default transaction strategy (direct JDBC transactions)
INFO - No TransactionManagerLookup configured (in JTA environment, use of read-write or transactional second-level cache is not recommended)
INFO - Automatic flush during beforeCompletion(): disabled
INFO - Automatic session close at end of transaction: disabled
INFO - Second-level cache: enabled
INFO - Query cache: disabled
INFO - Cache provider: org.hibernate.cache.EhCacheProvider
INFO - Optimize cache for minimal puts: disabled
INFO - Structured second-level cache entries: enabled
INFO - Statistics: disabled
INFO - Deleted entity synthetic identifier rollback: disabled
INFO - Default entity-mode: pojo
INFO - building session factory
WARN - No configuration found. Configuring ehcache from ehcache-failsafe.xml found in the classpath: jar:file:/home/wdemoss/projects/threewide/common/dev/lib/spring/ehcache-1.1.jar!/ehcache-failsafe.xml
INFO - Not binding factory to JNDI, no JNDI name configured
INFO - Checking 0 named queries
INFO - cleaning up connection pool: jdbc:hsqldb:.
WARN - SQL Error: -28, SQLState: S0022
ERROR - Column not found: BB0_1_.FIELD3 in statement [select bb0_.BB as id, bb0_2_.commonProperty as commonPr2_0_, bb0_1_.field0 as field2_1_, bb0_1_.field1 as field3_1_, bb0_.field2 as field2_2_, bb0_.field3 as field3_2_ from BB bb0_ inner join BA bb0_1_ on bb0_.BB=bb0_1_.A inner join A bb0_2_ on bb0_.BB=bb0_2_.id where bb0_1_.field3='value5']
WARN - SQL Error: -28, SQLState: S0022
ERROR - Column not found: BB0_1_.FIELD3 in statement [select bb0_.BB as id, bb0_2_.commonProperty as commonPr2_0_, bb0_1_.field0 as field2_1_, bb0_1_.field1 as field3_1_, bb0_.field2 as field2_2_, bb0_.field3 as field3_2_ from BB bb0_ inner join BA bb0_1_ on bb0_.BB=bb0_1_.A inner join A bb0_2_ on bb0_.BB=bb0_2_.id where bb0_1_.field3='value5']