User
относится к Employee
как один ко многим.
Проблема в том, что список Employee
s в PeristentSet пуст.
Это видно из отладки.
И это как минимум один Employee
существует в БД для User
.
SQL:
create table users(
id int not null primary key,
...
constraint `emp_constr` foreign key(`empid`) references `employee`(`id`));
Пользовательский компонент:
@ManagedBean
@SessionScoped
public class User {
private long id;
private List<Employee> employees = new ArrayList<Employee>();
...
user.hbm.xml config:
<list name="employees" cascade="all" inverse="false" fetch="join">
<key>
<column name="userid" not-null="true"/>
</key>
<index column="idx"/>
<one-to-many class="entry.Employee"/>
</list>
DAO вызов:
@Transactional
public List<User> getUsers() {
return sessionFactory.getCurrentSession().createCriteria(User.class)
.list();
}
Есть ли ошибки в файле .hbm.xml
или я должен добавить setFetchMode()
к DAO
явно?
РЕДАКТИРОВАТЬ:
Я могу получить только коллекцию одного размера, в действительности она содержит больше элементов с такой конфигурацией:
<list name="employees" table="employee" lazy="false">
<key column="userid" not-null="true"/>
<list-index column="idx"/>
<one-to-many class="entry.Employee"/>
</list>
это потому что idx=0
если idx=7
размер коллекции будет 8