2016-02-05 21 views
0

我在Play框架中創建了REST服務,並且我有一個從請求中讀取JSON的路由。 JSON的格式如下:將不同的JSON密鑰設置爲字段的值Play框架

{ 
"email":"[email protected]", 
"password":"pw", 
"address":{ 
"city":"cityName", 
"country":"countryName"} 
} 

然後我用user = Json.fromJson(json, User.class);以JSON解析爲用戶類。在我的數據庫,我必須以一對一的關係看起來像表:

用戶:

EMAIL VARCHAR, 
NAME STRING 

地址:

EMAIL VARCHAR, 
CITY VARCHAR, 
ADDRESS VARCHAR 

其中EMAIL是外鍵。由於我收到的JSON只有5個​​值,當播放框架將新記錄保存到數據庫時,在Address中它只保存CITY和ADDRESS,並且EMAIL字段保存爲空。之後我無法檢索相關用戶記錄的Address項的值,因爲連接它們的外鍵保存爲空。 (這些是sql查詢:)

是否有一些註釋或其他方式如何使用JSON的電子郵件值作爲地址表中的電子郵件值?

這裏是我寫我的模型類:

@Entity 
@Table(name = "User") 
public class User extends Model{ 
    @Id 
    @Column(length = 80) 
    private String email; 
    @Column(length = 100) 
    private String password; 
    @OneToOne(cascade = CascadeType.ALL, mappedBy = "user") 
    private Address address; 
} 

@Entity 
@Table(name = Address 
public class Address extends Model{ 
    @OneToOne() 
    @JoinColumn(name = "email") 
    private User user; 

    @Column(length = 100) 
    private String city; 
    @Column(length = 100) 
    private String country; 
} 
+0

任何人都可以幫忙嗎? – xpg94

回答

2

你爲什麼不嘗試保存地址第一,後來當對象地址ORM集對象地址管理,以用戶對象並堅持對象用戶。

事情是這樣的:

  • 解析JSON到用戶對象
  • 用戶解析對象得到地址
  • 堅持地址對象
  • 設置地址對象用戶對象再次
  • 堅持用戶對象。

我希望這可以幫助。

+0

謝謝你,我有點「盲目」不看這個解決方案。我在想,有些方法可以通過使用註釋來解決它,而我沒有想到其他的可能性。 – xpg94