Java hibernate和json的问题
所以我有一个用户和一个客户端。用户可以有多个客户端。但是json不能返回一个值user 所以我做了这样的事情:Java hibernate和json的问题,java,json,hibernate,Java,Json,Hibernate,所以我有一个用户和一个客户端。用户可以有多个客户端。但是json不能返回一个值user 所以我做了这样的事情: @Column private Integer fkIdUser ; 但我对冬眠还不熟悉,我想知道这样做是否正确。或者我需要使用一个带有多对一注释的类,但如何使用json呢 用户类 public class User { public static User globalUser; @Id @GeneratedValue(strategy
@Column
private Integer fkIdUser ;
但我对冬眠还不熟悉,我想知道这样做是否正确。或者我需要使用一个带有多对一注释的类,但如何使用json呢
用户类
public class User {
public static User globalUser;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_user")
private Integer id;
@Column(unique = true)
private String email;
然后是客户机类
@Entity
@Table(name ="tbl_clients")
@Access(value = AccessType.FIELD)
public class Client {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id_client")
private Integer id;
/* This works
@Column
private Integer fkIdUser ;
*/
// This does not
@ManyToOne
@JoinColumn(name = "fk_id_user")
private User user;
我在ClientController中使用此函数将客户端存储到数据库
@RequestMapping(value = "/addclient",method = RequestMethod.POST)
public void addClient(@RequestBody Client client) {
clientDao.save(client);
}
您必须使用与
@JoinColumn
名称中的列相同的名称。因为您使用的是fkIdUser
作为变量,并且它可以工作,所以我想这是您的列名。那么您的映射应该如下所示:
@ManyToOne
@JoinColumn(name = "fkIdUser")
private User user;
json是如何进入您的问题的?我从客户端控制器添加了函数如何检索json它不起作用我得到了一个mysql异常:“fk_id_user”列不能为空这没有意义,如果您没有在工作示例中映射
@Column(name=“fk_id_user”)
,那么,json可能没有返回完整的User
对象,而是只返回其id,这导致了您的问题。我确实只返回了用户id。但我应该返回用户吗?或者我可以只返回用户id,或者这不是一个好的做法。您可以,但您不能期望自动填写用户信息。您需要首先通过EntityManager.find(User.class,userId)
从数据库中找到相应的用户(这可以替换为任何等效的用户,具体取决于您使用的实现),并将其设置为您的用户