Hibernate Criteria即使记录不存在也返回行LEFT OUTER JOIN

时间:2013-08-23 12:39:27

标签: hibernate hibernate-criteria

我们有两张桌子。 Item:item_id,name

ItemInfo:id,item_id,info_id,item_info

Item表可以在ItemInfo中有多个条目。

我想在我想要获取条目的同时加入两个表 从Item表中可能没有ItemInfo中的任何关联条目。 如何使用Hibernate标准实现此目的?

public class Item {
    private long item_id;
    private String name;

    public long getItem_id() {
        return item_id;
    }

    public void setItem_id(long item_id) {
        this.item_id = item_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

public class ItemInfo {
    private long id;
    private long item_id;
    private String item_info;

    public long getId() {
        return id;
    }

    public void setId(long id) {
        this.id = id;
    }

    public long getItem_id() {
        return item_id;
    }

    public void setItem_id(long item_id) {
        this.item_id = item_id;
    }   


    public String getItem_info() {
        return item_info;
    }

    public void setItem_info(String item_info) {
        this.item_info = item_info;
    }
}

1 个答案:

答案 0 :(得分:1)

首先让我纠正你的POJO。

public class ItemInfo {
  private long id;
  private Item item_id;
  private long info_id;
  private String item_info;

 //getter-setter of all
} 

查找item_id数据类型的更改。相应地更改注释/映射文件。

然后尝试执行以下标准。

Criteria crit = session.createCriteria(Item.class);
crit.setFetchMode("item_id", FetchMode.JOIN);
List<Item> itemList = criteria.list();