簡體   English   中英

休眠執行多個查詢

[英]hibernate multiple queries executing

我有一個模型用戶,並且具有id和其他屬性。

public class User{
      int id;
      .....

      @OneToOne(fetch=FetchType.LAZY)
      @JoinColumn(name="id")
      private UserLocation userLocationObj;

}

UserLocation是模型類,像UserLocation一樣,還有更多5-6個具有相同批注的屬性,以與User類建立關聯。

在UserLocation模型類和其他模型類中,我也與user類進行了一對一的映射。

以及其他屬性以及其getter和setter。 當我嘗試通過使用id獲取User類的對象時,它正在執行n個查詢,然后顯示stackoverflow錯誤。 為什么這樣 ??

我的用戶表結構是:用戶

+----------------------+-----
| Field                | Key|
+----------------------+-----
| id                   | PRI| 
| userName             |    |             
| first_name           |    |             
| middle_name          |    |            
| last_name            |    |            
| dateOfBirth          |    |            
| gender               |    |            
| city                 |    |            
| email                |    |
+----------------------+----+

My UserLocation table Structure is :
UserLocation
+-----------------++-----
| Field           | Key |
+-----------------+------
| id              | PRI |
| user_id         |     |
| current_city    |     |
| current_country |     |
| latitude        |     |
| longitude       |     |
| iso_location    |     |
+-----------------+-----+

UserLocation中的UserId是Users表的ID。

謝謝

這里的問題與您的列的名稱有關:您正在告訴hibernate @JoinColumn(name="id") :這意味着表User有一個名為id的字段,該字段連接到表UserLocation ,即不是您的數據庫結構是什么。

相反,您在UserLocation表中有對象User ,因此由表示

public class UserLocation{
      int id;
      .....

      @OneToOne(fetch=FetchType.LAZY)
      @JoinColumn(name="user_id")
      private User user;

}

然后,您可以讓User類知道它已經使用以下方法連接了UserLocation類:

public class User{
      int id;
      .....

      @OneToOne(fetch=FetchType.LAZY, mappedBy = "user_id")
      private UserLocation userLocationObj;

}

所述JoinColumn注釋指示該類是關系的所有者 ,所以在這種情況下,所有者是UserLocation ,而mappedBy表示鏈接的另一側。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM