hibernate 新增數據以後,不能級聯查詢到關聯的數據

框架是 hibernate 3 , 還覺得出現了什麼bug , 就說新增以後, 查詢的時候,不能關聯到 對應的對象。數據庫

好比 有一個User 對象,關聯的表是 user 表。框架

在User 對象裏面 有一個 訂單對象:fetch

@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "order_id", referencedColumnName = "id", updatable = false, nullable = true, insertable = false)
    private ProcessOrder order;hibernate

 

通常來講 若是查詢到了  user 對象就能夠直接調用  user.getOrder() 來獲取 訂單的對應數據庫數據了。線程

可是 若是對象

service.save(user);  事務

user.getOrder() ;// 訂單數據就不會獲取到。get

是的就是失效了。table

可是 當你 在其餘頁面查詢user.getOrder 的時候,是能夠 級聯查詢到 order數據的。service

 

緣由

這個是 hibernate的 特點了,插入的時候,立刻查詢就會 級聯獲取其餘對象是 不成功的, 返回都是 NULL 的。

無論是不是在同一個事務中都是這樣的, 只要在 同一個線程裏面都是 這樣的。

好比 在 一個

controller  裏面

 int userID =service.save(user);

User user= service.getUser(userId);

user.getOrder();// 也是同樣獲取不到 訂單數據的

 

因此只能 主動 查詢一次數據了,反正 使用user 對象 關聯order 數據是不行了。

這個不知道是 hibernate的坑仍是說故意這樣的

除非是 在 保存的時候 set  關聯對象進去 好比:

user.setOrder(order);// 這樣就能夠經過 

service.save(user);  

user.getOrder() ;// 訂單數據就不會獲取到。

相關文章
相關標籤/搜索