将一个表的联接列与另一个表的一列合并到JAVA对象中

将一个表的联接列与另一个表的一列合并到JAVA对象中,java,mysql,sql,spring-boot,spring-data-jpa,Java,Mysql,Sql,Spring Boot,Spring Data Jpa,我想在一个实体(对象)中组合不同表的列,但我得到的列为null,即使它不是null。 我有两个实体称为操作和取消操作: 操作: @Entity @Table(name = "OPERATIONS") public class Operation{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(n

我想在一个实体(对象)中组合不同表的列,但我得到的列为null,即使它不是null。 我有两个实体称为
操作
取消操作

操作:

@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
}
取消操作:

@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
}
我正在尝试加入
操作
取消操作
,以便显示取消操作和空非取消操作的原因

这是我的存储库中的本机查询:

@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);
@query(value=“选择op.*,从op.ID=co.OPERATION\u ID上的操作op LEFT JOIN cancelled\u OPERATION co中选择co.raisson作为理由”,countQuery=“从op.ID=co.OPERATION\u ID上的操作op LEFT JOIN cancelled\u operations中选择count(*))
Page getAllOperations(可分页可分页);
这就是我如何称呼我的存储库:

@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);
final Page operations=operationRepository.getAllOperations(可分页);
我尝试了许多解决方案,即使用
对象[]
而不是
操作
,并且在
操作
实体和
@transient
注释中添加了一个名为raison的属性,但即使我仍然得到了空的raison。 你能给我一个提示来解决这个问题吗。
提前感谢。

在CanceledOperation实体中,您能否给出referencedColumnName=“ID”并重试


我找到了一个简单的方法,我使用了
findAll()来代替复杂的查询
的每个表,然后我使用
stream
map
从存储库接收的两个列表,将
CanceledOperation
属性影响到
操作的
message
属性。您返回一个
页面
,但该操作与doman模型中已取消的操作没有关系(至少在发布的代码中没有)。得到一个空列到底是什么意思?