请教一个Hibernate DetachedCriteria 查询该如何写

熊猫大侠到此一游 发布于 2014/11/19 18:39
阅读 512
收藏 0

请教一下Hibernate中用DetachedCriteria如果实现如下SQL.

SELECT t.* FROM T_S_PURCHASE_DETAIL t 
LEFT JOIN T_S_PRINT_DETAIL p ON p.PURCHASE_ID = t.PURCHASE_ID 
WHERE p.PRINT_ID =  1



实体定义如下:
@Entity
@Table(name = "T_S_PURCHASE_DETAIL")
public class PurchaseDetailDto implements Serializable{

	@Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "detail_id")
	private Long id;

	@OneToOne(cascade = {}, optional = true)
    @JoinColumn(name = "purchase_id")
	private PurchaseDto purchase;

	//...
}


@Entity
@Table(name = "T_S_PRINT_DETAIL")
public class PrintDetailDto{

	@Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name="id")
    private Integer id;

    @OneToOne(cascade = {}, optional = true)
    @JoinColumn(name = "purchase_id")
    private PurchaseDto purchase;

    @OneToOne(cascade = {}, optional = true)
    @JoinColumn(name = "print_id")
    private PrintDto print;

    //...
}


@Entity
@Table(name = "T_S_PRINT")
public class PrintDto implements Serializable {

	@Id
    @GeneratedValue(strategy= GenerationType.AUTO)
    @Column(name="id")
    private Integer id;

    //...
}

再补充一下PurchaseDto.java实体定义:

@Entity
@Table(name = "T_S_PURCHASE")
public class PurchaseDto{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "purchase_id")
    private Long id; // 采购编号
    
    //...
}



先谢谢大家,Hibernate用的不多,DetachedCriteria平时也是单表查。





加载中
0
zfc827
zfc827
session.createCriteria( PurchaseDetailDto.class )
       .createAlias("purchase", "pur", Criteria.LEFT_JOIN, Restrictions.eq("pur.print.id", 1) )
       .list();



zfc827
zfc827
回复 @Sleepwalke : Criteria接口需要关联了才能join查询。
熊猫大侠到此一游
熊猫大侠到此一游
非常感谢,我按照你的代码试了下,查出来的结果有点不对。我的purchase和print没有关联,这样查出来的结果,其实是t_s_purchase_detail里的所有结果。 我也是一直不知道怎么写,所以没办法就用SQL实现的。其实我是挺想知道用QBC这种查询怎么实现,这两天一直再找这方面的资料在看。
返回顶部
顶部