我使用springboot2.4.2和数据模块来实现jpa。
现在,我使用一个oracle视图,由这个jpa实体Map:
@Entity
@Immutable
@Table(name = "ORDER_EXPORT_V")
@ToString
@Data
@NoArgsConstructor
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
public class OrderExportView implements Serializable {
private static final long serialVersionUID = -4417678438840201704L;
@Id
@Column(name = "ID", nullable = false)
@EqualsAndHashCode.Include
private Long id;
....
视图使用了一个并集,它允许我获得同一父实体的两个不同属性,因此对于具有此并集的同一父实体(a),我在第1行中获得属性b,在第2行中获得属性c:这意味着这些行将彼此不同。
如果使用oracle客户机运行查询,则会得到预期的结果集:相同的父实体具有两个包含不同属性的不同行。现在的问题是:当我使用spring数据(jpa)运行查询时,我得到了错误的结果集:两行但是重复。
在debug中,我检查执行spring数据的查询是否正确;如果我运行相同的查询,结果集是正确的,但是来自java/spring数据的结果集是错误的。为什么?
谢谢你的支持!
1条答案
按热度按时间l5tcr1uw1#
我得到了它!我在身份证上错了。
这两行具有相同的父id,这对于jpa来说是不好的,jpa希望每行都有一个唯一的值。所以,现在我在视图中引入了一个uuid字段:
在jpa实体中:
现在一切正常,因为新字段的每一行都有一个唯一的值。