Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何通过id创建hibernate关联?_Java_Hibernate_Left Join - Fatal编程技术网

Java 如何通过id创建hibernate关联?

Java 如何通过id创建hibernate关联?,java,hibernate,left-join,Java,Hibernate,Left Join,这是一个具有id的Client实例和具有clientId的Order实例。是否有一种方法可以在不为订单添加任何字段的情况下,将订单左连接到客户端? 结果SQL应该是这样的: Select * from Client left join Order ON Order.clientId = Client.id 请注意,Order.clientId可能为空。hibernate有什么诀窍吗?我建议您添加从客户到订单的一对多关系 public class Client{ @OneToMany

这是一个具有
id
Client
实例和具有
clientId
Order
实例。是否有一种方法可以在不为
订单
添加任何字段的情况下,将
订单
左连接到
客户端
? 结果SQL应该是这样的:

 Select * from Client left join Order ON Order.clientId = Client.id

请注意,
Order.clientId
可能为空。hibernate有什么诀窍吗?

我建议您添加从客户到订单的一对多关系

public class Client{

    @OneToMany
    private List<Order> orders = new ArrayList<Order>();

    public List<Order> getOrders() {
       return orders;
    }
    public void setOrder(List<Order> orders){
       this.orders = orders;
    }
 }
公共类客户端{
@独身癖
私有列表顺序=新的ArrayList();
公共列表getOrders(){
退货订单;
}
公共作废订单(列表订单){
这个。订单=订单;
}
}
然后这样做:

EntityManager em = factory.createEntityManager();
Query query = em.createQuery("SELECT x FROM Client left join FETCH x.orders");
List<Client> clients = query.getResultList();
EntityManager em=factory.createEntityManager();
Query Query=em.createQuery(“从客户端左侧选择x连接获取x.orders”);
List clients=query.getResultList();