2015-10-20 85 views
0

所以我有一个用户和一个client.The用户可以有多个clients.But json不能返回一个值的用户。休眠和json故障

所以我做了这样的事情:

@Column 
    private Integer fkIdUser ; 

但我是新来的冬眠,我想知道如果这是这样做的正确方法。或者我需要使用一个多对一的注释类,但我怎么会与json做到这一点?

User类

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); 
} 
+0

而json如何进入你的问题? – renke

+0

我添加了从客户端控制器如何检索json的函数 – Greg

回答

0

你必须使用@JoinColumn名称中列的相同名称。既然你使用的是fkIdUser作为变量,它可以工作,我想这是你的列名。那么你的映射应该是这样的:

@ManyToOne 
@JoinColumn(name = "fkIdUser") 
private User user; 
+0

它不起作用我得到一个mysql异常:列'fk_id_user'不能为空 – Greg

+0

这没有意义,如果你没有映射'@Column (name =“fk_id_user”)''在工作示例中 – renke

+0

另外,json可能不会返回一个完整的'User'对象,而只是它的id,导致您的问题。 – renke