[英]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.