我正在努力将现有项目转换为使用Hibernate。我正在使用Mysql作为数据库。我有一个这样的课:
@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....
}
我在尝试将用户添加到数据库时遇到了问题。客户端正在以JSON格式发送数据,例如:
{
"user":
{
"name": "John",
"groupId": 3
}
}
此格式与user
表格匹配,该表格包含user_id
,group_id
和username
列。我曾经能够使用下面的代码将JSON对象直接转换为User
对象:
Gson gson = new GsonBuilder().create();
User user = gson.fromJson(userJSON.toString(), User.class);
但是现在我正在使用Hibernate,我的User
类没有名为groupId
的成员变量。相反,它有一个名为Group
的{{1}}类型的成员变量。上面的代码创建了一个没有group
成员的User
对象,当我将其保存到数据库时,列group
被设置为null。
是否有一种好的/简单的方法来创建一个{J}对象,可以使用group_id
而不是实际的User
从JSON对象保存到数据库中对象?
我不认为必须更改客户端发送到服务器的JSON对象是个好主意。另外我希望我不必解析JSON对象来获取groupId
,然后执行查询以从数据库中获取Group
对象,然后使用该groupId
对象以及用于创建要保存的Group
对象的JSON对象。