Java 从外键获取ID的JPA命令
与JPA上的这种语法有什么不同Java 从外键获取ID的JPA命令,java,hibernate,jpa,Java,Hibernate,Jpa,与JPA上的这种语法有什么不同 q.setMerchant(em.find(Merchant.class, m.getId())); 中间 q.getMerchant.setId(m.getId()); 在第一种情况下,商户对象成为一个已连接的实体,在第二种情况下,如果尚未连接,它将保持分离状态。您的第一个示例将q商户设置为使用I'd m.getId()找到的商户。第二个示例检索调用q返回的商户,然后将其id设置为m.getId()。它不会将q上的商户设置为识别我的m.getId()的商户,
q.setMerchant(em.find(Merchant.class, m.getId()));
中间
q.getMerchant.setId(m.getId());
在第一种情况下,商户对象成为一个已连接的实体,在第二种情况下,如果尚未连接,它将保持分离状态。您的第一个示例将q商户设置为使用I'd m.getId()找到的商户。第二个示例检索调用q返回的商户,然后将其id设置为m.getId()。它不会将q上的商户设置为识别我的m.getId()的商户,因此在案例2中,如果我不编写以下代码:q.setmerchant(getMerchant()),id将返回null。是吗?如果不设置Merchant对象,那么q.getMerchant()可能返回null,而q.getMerchant().setId(m.getId())可能抛出NullPointerException。我明白了。。因此,在设置id之前,我们必须先设置q.setmerchant(getMerchant()),谢谢