我正在使用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