0

这里我有两Entity节课。

@Table(name = "AC_ACCOUNT_MASTER")
public abstract class Account implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(name = "a_name")
    private String name;
}

@Table(name = "AC_VOUCHER_MASTER")
public class Voucher implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    private Double amt;

    @ManyToOne
    private Account drAc;

    @ManyToOne
    private Account crAc;

}

表中有 10 行,其中表中AC_VOUCHER_MASTER有 4 条drAc数据。nullAC_VOUCHER_MASTER

session.createQuery("select v.id, v.amount, v.drAc.id,  v.crAc.id  from Voucher v").list();

上面的查询返回 10 个结果(虽然 4 个drAcnull)。但是当我输入名称引用(v.drAc.name)时,它只返回那些drAc不是的行(6行) null

"select v.id, v.amount, v.drAc.id, v.drAc.name, v.crAc.id , v.crAc.name  from Voucher v"

我现在该怎么办 ?有没有用coalesce()或者别的什么?

4

1 回答 1

1

使用左连接:

select v.id, v.amount, drAc.id, drAc.name, crAc.id , crAc.name 
from Voucher v
left join v.drAc drAc
left join v.crAc crAc
于 2017-03-06T17:45:16.153 回答