【发布时间】:2018-02-15 13:16:20
【问题描述】:
我正在努力将现有项目转换为使用 Hibernate。我有这样的课:
@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 的问题,或者从具有 groupId 而不是 Group 对象的 json 对象添加新的 User 时遇到问题。因此,在我花更多时间在两种格式之间来回切换之前,我想确定我应该以哪种方式使用注释以最符合行业标准?
【问题讨论】:
标签: java mysql hibernate annotations