我有一个实体:
public class Bird {
@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
@OneToOne(optional = true)
@Fetch(FetchMode.JOIN)
@JoinColumn(name = "current_transmitter_id", nullable = true)
private Transmitter currentTransmitter;
....
}
并非每只鸟都有一个相关的
CurrentTransmitter
。
我的 DTO 投影查询是:
@Query("SELECT NEW com.contoso.view.BirdSummaryDTO(b.name, b.sex, b.currentTransmitter ) FROM Bird b")
List<BirdSummaryDTO> listBirdDTO();
BirdSummaryDTO 看起来像:
public class BirdSummaryDTO {
final String name;
final String sex;
final Transmitter currentTransmitter;
public BirdSummaryDTO(Integer id, Transmitter currentTransmitter) {
this.name = name;
this.sex = sex;
this.currentTransmitter = currentTransmitter;
}
但是我的查询仅返回具有发射器的鸟类。它使用 INNER JOIN。类似的问题here,但添加 FetchMode.JOIN 并未将查询更改为 OUTER JOIN。
问:有没有注释或方法可以让它返回所有鸟类,无论它们是否有当前的发射器?