将一个表的联接列与另一个表的一列合并到JAVA对象中
我想在一个实体(对象)中组合不同表的列,但我得到的列为null,即使它不是null。 我有两个实体称为将一个表的联接列与另一个表的一列合并到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
操作
和取消操作
:
操作:
@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模型中已取消的操作没有关系(至少在发布的代码中没有)。得到一个空列到底是什么意思?