当尝试将单向OneToOne
或ManyToOne
关系用于 0..1 关系时,OPENJPA 将生成 INNER JOIN 而不是 LEFT JOIN:
@OneToOne(optional=true, fetch= FetchType.LAZY)
@JoinTable(name="linkThisResult",
joinColumns= {
@JoinColumn(insertable=false, updatable=false, unique=true, nullable=false, name="thisid",referencedColumnName="thisid")
},
inverseJoinColumns= {
@JoinColumn(insertable=false, updatable=false, nullable=false, name="resultid", referencedColumnName="resultid")
}
)
private ResultEntity resultEntity;
给定的表格:
result: { resultId, ... }
this : { thisId, ... }
linkThisResult: { linkThisResultId, resultId, thisId, ... }
可选、可插入/可更新/可空标志似乎都不会影响生成的 sql。这是使用 OPENJPA 2.2.0。对于没有 JoinTable 的直接 JoinColumns,可选的确实会更改连接类型。
问题是:如何向 OPENJPA 表明应该执行 LEFT JOIN 的等效操作(理想情况下是惰性但不是严格要求)?