Java 如何使用Hibernate保存具有一对一关系的两个类?

Java 如何使用Hibernate保存具有一对一关系的两个类?,java,spring,hibernate,api,rest,Java,Spring,Hibernate,Api,Rest,我使用Hibernate创建了一个Spring应用程序,在其中实现了用户和地址表之间的一对一关系。将为同一个like创建两个表,一个用于用户,另一个用于地址。现在,我想实现同样的目标,但面临着障碍。以下是我的做法, 创建了一个地址类及其getter和setter 创建了一个用户类及其getter和setters+@OneToOne映射和address类 为用户和地址创建了DAO和服务类 如何在控制器中调用服务类,以便它将用户和地址详细信息作为输入,并将其保存在数据库中 调用entityManag

我使用Hibernate创建了一个Spring应用程序,在其中实现了用户和地址表之间的一对一关系。将为同一个like创建两个表,一个用于用户,另一个用于地址。现在,我想实现同样的目标,但面临着障碍。以下是我的做法,

  • 创建了一个地址类及其getter和setter
  • 创建了一个用户类及其getter和setters+@OneToOne映射和address类
  • 为用户和地址创建了DAO和服务类
  • 如何在控制器中调用服务类,以便它将用户和地址详细信息作为输入,并将其保存在数据库中

  • 调用
    entityManager.persist(user)
    就足够了,因为您在关联上有一个
    cascade=ALL
    :实体管理器将持久化用户并在地址上级联持久化操作。

    请详细说明一下好吗?我不知道要添加什么。您不明白什么?“调用entityManager.persist(用户)就足够了,”。。。我需要在上述控制器中更改什么?我应该为创建的API添加用户和地址详细信息作为输入json吗?您需要通过返回状态来编译该方法。您的方法已经将一个用户作为参数,并且在该用户中,您拥有该用户的地址。因此,该方法将用户(包含他的地址)传递给服务,我猜服务将其传递给DAO,DAO只需要持久化用户。持久化用户也将持久化用户的地址。我也这么做了,但当我使用地址参数将JSON作为输入传递时,它会提示404,当我删除地址参数并仅保留用户参数时,它会提示“列'AddressId'不能为空”
    @OneToOne(cascade = CascadeType.ALL)
    @JoinColumn(name = "AddressId")
    private Address address;
    
    @RequestMapping(value = "/create", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE)
      public @ResponseBody Status addUserAddress(@RequestBody User user)
              throws Exception {
          userServices.addUser(user);
           // What shall I add here to save address also?
      }