Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java hibernate和json的问题_Java_Json_Hibernate - Fatal编程技术网

Java hibernate和json的问题

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

所以我有一个用户和一个客户端。用户可以有多个客户端。但是json不能返回一个值user

所以我做了这样的事情:

    @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)
从数据库中找到相应的用户(这可以替换为任何等效的用户,具体取决于您使用的实现),并将其设置为您的用户