1

当尝试将单向OneToOneManyToOne关系用于 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 的等效操作(理想情况下是惰性但不是严格要求)?

4

0 回答 0