так вот простое визуальное объяснение.
У меня есть эти два класса,
<class name="Car" table="CARS" schema="car">
<id name="id" type="java.lang.Long">
<generator class="increment"/>
</id>
<property name="name" type="text" />
</class>
и
<class name="Human" table="HUMANS" schema="human">
<id name="id" type="java.lang.Long">
<generator class="increment"/>
</id>
<property name="name" type="text" />
<property name="car" type="path.to.Car" />
</class>
и это мой bean-файл xml для сессий БД и dataResource
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
p:driverClassName="org.postgresql.Driver"
p:url="${db.url}"
p:username="${db.username}"
p:password="${db.password}"
destroy-method="close"/>
<bean id="persistenceEventInterceptor"
class="myproject.commons.persistence.hibernate.interception.PersistenceEventInterceptor"/>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">org.hibernate.spatial.dialect.postgis.PostgisDialect</prop>
<prop key="hibernate.show_sql">false</prop>
<prop key="hibernate.default_schema">human</prop>
<prop key="hibernate.c3p0.min_size">50</prop>
<prop key="hibernate.c3p0.max_size">250</prop>
<prop key="hibernate.c3p0.timeout">1800</prop>
<prop key="hibernate.c3p0.max_statements">150</prop>
</props>
</property>
<property name="entityInterceptor">
<ref bean="persistenceEventInterceptor"/>
</property>
<property name="mappingLocations">
<list>
<value>classpath*:myproject/core/db/libhbm/**/*.hbm.xml</value>
<value>classpath*:myproject/core/db/hbm/**/*.hbm.xml</value>
</list>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
<bean id="hibernateSessionManager" class="myproject.commons.persistence.base.HibernateSessionManager">
<constructor-arg ref="sessionFactory"/>
</bean>
<context:component-scan base-package="myproject.model">
<context:include-filter type="regex" expression=".*\.dao\..*DAO"/>
<context:include-filter type="regex" expression=".*\.logic\..*Mgr"/>
</context:component-scan>
проблема в том, что всякий раз, когда я пытаюсь получить, обновить или удалить строку из человеческой таблицы, я получаю эту ошибку:
Вызвано: org.postgresql.util.PSQLException: ОШИБКА: отношение "human.cars" не существует
Я знаю, что автомобили находятся в другой схеме, поэтому они не могут найти их! но как я могу сделать человеческий класс для чтения автомобильных объектов из автомобильной схемы ???