我正在使用Spring Rest Data,并且已将应用程序配置为使用RepositoryRestMvcConfiguration。我有以下2个实体:Spring Rest Data - 未在@RequestBody中转换的外键对象URL
企业有很多的用户关系。
@Entity
@Table(name="enterprise")
public class Enterprise extends BaseEntity
{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="enterprise_id")
private Long id;
@Column(name="enterprise_name")
private String name;
}
@Entity
@Table(name="user")
public class User extends BaseEntity
{
@Id
@Column(name="user_id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "owner_enterprise_id", referencedColumnName = "enterprise_id")
private Enterprise ownerEnterprise;
@Column(name="username")
private String userName;
@Column(name="emailaddress")
private String emailAddress;
@Column(name="passwordhash")
private String password;
}
我能够发送POST请求创建企业,我想要做的下一件事就是创建一个具有FK给企业用户。
这里是我的UserController中:
@RequestMapping(value="/createUser", method=RequestMethod.POST)
public ResponseEntity<User> register(@RequestBody User user) {
User newUser = userService.register(user);
return new ResponseEntity<User>(newUser, HttpStatus.OK);
}
当我尝试发送后创建新用户:
curl -i -X POST \
-H "Content-Type: application/json" \
-d '{"userName":"johndoe", "emailAddress":"[email protected]", "password":"johnpass1", "ownerEnterprise":"http://localhost:8080/enterprises/1"
}' \
http://localhost:8080/createUser
我把断点在我的控制器,看到用户对象的ownerEnterprise场为空(但其他字段包含正确的数据)。 有人能帮我看看我失踪了吗?我试图搜索这个小时,没有运气。
我也核实网址是否正确:
curl http://localhost:8080/enterprises/1
{
"name" : "MyEnterprise",
"_links" : {
"self" : {
"href" : "http://localhost:8080/enterprises/1"
}
}
}
多谢您的时间!
但按照本指南:http://spring.io/guides/gs/accessing-data-rest/ .. @RepositoryRestResource不需要要导出的仓库。它仅用于更改导出详细信息,例如使用/ people而不是/ persons的默认值。 – user1955934 2014-11-22 22:02:27
我试图将@RepositoryRestResource添加到我的UserRepository类,但仍然是同一问题..:x – user1955934 2014-11-23 01:15:26
您是否还删除了此特定控制器?@RepositoryRestResource公开了它自己的一组端点 – 2014-11-23 03:32:43