【发布时间】:2015-01-20 19:40:12
【问题描述】:
我正在使用 Spring Rest Data,并且我已将我的应用程序配置为使用 RepositoryRestMvcConfiguration。我有以下 2 个实体:
企业有很多用户关系。
@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;
}
我能够发送创建企业的发布请求,接下来我要做的是创建一个对企业具有 FK 的用户。
这是我的用户控制器:
@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":"johndoe@gmail.com", "password":"johnpass1", "ownerEnterprise":"http://localhost:8080/enterprises/1"
}' \
http://localhost:8080/createUser
我在控制器中设置了断点,发现 User 对象的 ownerEnterprise 字段为空(但其他字段包含正确的数据)。 有人可以帮我看看我错过了什么吗?我已经尝试搜索了几个小时,但没有运气。
我也验证了网址是正确的:
curl http://localhost:8080/enterprises/1
{
"name" : "MyEnterprise",
"_links" : {
"self" : {
"href" : "http://localhost:8080/enterprises/1"
}
}
}
非常感谢您的宝贵时间!!
【问题讨论】:
标签: java rest spring-mvc jpa spring-data