Доброго времени суток, очень надеюсь на вашу помощь в разрешении проблемы, которая занимает мое внимание уже несколько дней.
Есть 2 таблицы regions и cities (отношение многие-к-одному), вот маппинги для них:
| Код |
<hibernate-mapping> <class name="City" table="CITIES"> <id name="id" column="CITY_ID"> <generator class="native"/> </id> <property name="name" column="NAME" not-null="true"/>
<many-to-one name="region" class="Region" column="REGION_ID" outer-join="true"/> </class> </hibernate-mapping>
|
| Код | <hibernate-mapping> <class name="Region" table="REGIONS"> <id name="id" column="REGION_ID"> <generator class="native"/> </id> <property name="name" column="NAME" not-null="true"/>
<set name="cities" lazy="true" cascade="save-update" inverse="true"> <key column="REGION_ID" not-null="true"/> <one-to-many class="City"/> </set>
</class> </hibernate-mapping>
|
Классы Region и City:
| Код | public class Region extends BaseObject {
private String name = "";
private List<City> cities;
public Region() { super(); }
public void setName(String Name) { name = Name; }
public String getName() { return name; }
public List<City> getCities() { return cities; }
public void setCities(List<City> cities) { this.cities = cities; } }
|
| Код | public class City extends BaseObject {
private String name = "";
private Region region;
public City() { super(); }
public void setName(String Name) { name = Name; }
public String getName() { return name; }
public Region getRegion() { return region; }
public void setRegion(Region region) { this.region = region; } }
|
Делаю следующие действия: добавляю несколько записей в таблицу regions, затем пытаюсь извлечь все записи из нее с использованием Criteria. Все отлично работает, если в конфиге хибернейта указан флажок создания структуры базы заново(<property name="hbm2ddl.auto">create</property>). Если же проделывать те же операции, но схему базы не создавать, то при попытке извлечения списка всех регионов вываливается эксепшн org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of domain.Region.cities.
Есть глобальная разница в инициализации персистентных объектов, создании внутренних хибернейтовских структур при применении hbm2ddl.auto=create и без? Есть ли идеи как побороть эксепш? Буду очень признателен. Если нужно, для детализации проблемы, могу выложить весь стек-трэйс и код получения объектов...
|