Bạn có thể cần sửa đổi phương pháp của mình như sau:
@SuppressWarnings("unchecked")
@Transactional
public Collection<Entry> findEntries() {
return sessionFactory.getCurrentSession()
.createCriteria(Entry.class)
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
.list();
}
Ngoài ra, hãy thay đổi addresses thành một Set :
@OneToMany(fetch=FetchType.EAGER)
@JoinColumn(name = "id")
private Set<EntryAddress> addresses;
Chỉnh sửa:
Ồ ... Trong EntryAddress bạn có id được định nghĩa là @Id nhưng nó không phải là duy nhất. Bạn nên tạo id khóa chính và để nó tự động tăng lên như bạn làm trong Entry . Sau đó, tạo một trường khác trong EntryAddress đó là khóa ngoại của Entry được gọi là entry_id .