有一个实体:
package com.igorgorbunov3333.core.entities.domain;
import javax.persistence.*;
@Entity
@Table(name = "cases")
public class Case {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
private String caseNumber;
private String dataI;
private String dataII;
private String dataIII;
@OneToOne
@JoinColumn(name = "id")
private Judge judge;
@OneToOne
@JoinColumn(name = "id")
private Lawyer lawyer;
@OneToOne
@JoinColumn(name = "id")
private Client client;
@Enumerated(value = EnumType.ORDINAL)
private CaseStatus statusI;
@Enumerated(value = EnumType.ORDINAL)
private CaseStatus statusII;
@Enumerated(value = EnumType.ORDINAL)
private CaseStatus statusIII;
private String document;
// геттеры и сеттеры
}
如您所见,有法官、律师、客户(关联)等字段。我在服务中收到:
public List<Case> findAll() {
Query query = entityManager.createNamedQuery("getAllCases");
return query.getResultList();
}
我在一个 servlet 中进行测试,我得到一个 NullPointerException。现在的问题是:如何正确组织协会?. findAll() 方法返回所有对象,但并非实体的所有字段都具有“完整”律师、案件、客户字段。也就是说,我在表中有 20 个案例,10 个律师。1 个律师可以处理多个案例,据我所知,findAll() 返回与 10 个律师相关的第一个 10 个案例,其余案例与无效律师。@ManyToOne 和@OneToMany 都试过了,不知道该用什么。
确保覆盖所有类的 hashCode 和 equals