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