我想在一个实体(对象)中合并不同表的列,但我得到的列为null,即使它不是null。我有两个实体叫做 Operation
以及 CanceledOperation
:
操作:
@Entity
@Table(name = "OPERATIONS")
public class Operation{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID", unique = true, nullable = false)
private Long id;
@Column(name = "Date")
private Timestamp date;
@Transient
private String message;
// Other attributes and getters & setters
}
取消操作:
@Entity
@Table(name = "CANCELED_OPERATIONS")
public class CanceledOperation{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "ID")
private Long id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "OPERATION_ID", nullable = false)
private Operation operation;
@Column(name = "RAINSON")
private String raison;
//getters & setters
}
我想加入 operation
以及 canceledIperation
以显示取消操作的原因和null non canceled。
这是我的存储库中的本机查询:
@query(value = "SELECT op.* , co.raison as raison FROM operations op LEFT JOIN canceled_operations co ON op.ID = co.OPERATION_ID", countQuery = "SELECT count(*) FROM operations op LEFT JOIN canceled_operations co ON op.ID = co.OPERATION_ID")
Page<Operation> getAllOperations(Pageable pageable);
我这样称呼我的存储库:
final Page<Operation> operations= operationRepository.getAllOperations(pageable);
我尝试了许多解决方法,即使用 Object[]
而不是 Operation
我还在 operation
具有的实体 @transient
注解,但即使我仍然得到的理由是空的。你能给我一个提示来解决这个问题吗。提前谢谢。
2条答案
按热度按时间r8xiu3jd1#
在canceledoperation实体中,是否可以指定referencedcolumnname=“id”并重试?
wj8zmpe12#
我找到了一个简单的方法,我用
findAll()
然后我会影响raison
属性来自CanceledOperation
到message
的属性Operation
使用stream
以及map
这两个用户从存储库收到了列表。