我正在將現有項目轉換爲使用Hibernate。我有這樣一個類:什麼是使用Hibernate註釋一個外部id的類的正確方法?
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long userId;
@Column(name = "group_id_user")
private Long groupId;
@Column(name = "name")
private String name;
...
// getters and setters....
}
和一類這樣的:
@Entity
@Table(name = "group")
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_id")
private Long groupId;
@Column(name="group_name")
private String groupName;
...
// getters and setters....
}
在user
表命名"group_id_user"
列應該是一個外鍵在group
命名"group_id"
列表。
讓這些類如上所示結構化,或者它們的結構如下所示,以確保數據庫中存在外鍵是否正確或「正確」?
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "user_id")
private Long userId;
@ManyToOne
@JoinColumn(name = "group_id_user")
private Group group;
@Column(name = "name")
private String name;
...
// getters and setters....
}
和
@Entity
@Table(name = "group")
public class Group {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "group_id")
private Long groupId;
@Column(name="group_name")
private String groupName;
...
// getters and setters....
}
我一直在使用這兩種格式的嘗試,但有問題的兩種方式。當我使用第一種格式時,我在創建查詢時遇到了連接的HQL語法問題。當我嘗試第二種格式時遇到問題,從數據庫中僅提取User
而沒有Group
,或者從json對象中添加新的User
,則有groupId
而不是Group
對象。因此,在我再花時間在兩種格式之間來回切換之前,我想知道哪種方式應該使用註釋來最好地符合行業標準?