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
.