我有以下实体:
@Entity
@Table(name = "request")
@NoArgsConstructor
@Getter
@Setter
@Component
public class Request {
@Id
@Column(name = "id", columnDefinition = "varchar(64)")
private String id;
...
@OneToMany(mappedBy="request")
private Set<RequestError> error;
...
和
@Entity
@Table(name = "edepot_request_error")
@Data
@NoArgsConstructor
public class RequestError implements Serializable {
@Id
@SequenceGenerator(name = "request_error_id_seq", sequenceName = "request_error_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "request_error_id_seq")
@JoinColumn(name="idempotencykey")
private String idempotencyKey;
@ManyToOne(targetEntity=Request.class)
private Request request;
...
当尝试进行查询时,例如:
EntityManager entityManager = emf.createEntityManager();
//EntityGraph entityGraph = entityManager.getEntityGraph("request-entity-graph");
String requestSql= "SELECT req FROM Request req";
List<Request> qryResultRequests = entityManager.createQuery(requestSql, Request.class)
.getResultList();
我总是得到正确的父记录集合,但我总是得到 1 个错误的子集合(当子表包含父项的多个错误时)。 我确实在论坛上搜索了多个问题,并且尝试了一些建议:
返回的父母集合是正确的,尽管
List<Request>
始终只包含给定父母的孩子集合中的1个错误(应该包含多个错误)。
错误表和请求表在我们的应用程序中彼此独立填写,查询只是一个选择(读取)查询,用于在控制台中获取请求记录以及为请求生成的错误。 这个想法是通过父实体加载子实体 我错过了什么或 Ì 做错了什么?