2016-02-05 6 views
0
.

. Я создаю службу REST в структуре воспроизведения, и у меня есть маршрут, который читает JSON по запросу. JSON в этом формате:Значение настройки для разных ключей JSON для поля. Структура воспроизведения.

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

Затем я использую user = Json.fromJson(json, User.class); для разбора JSON в класс пользователя. В моей базе данных, у меня есть к таблицам с 12:59 отношением, которые выглядят как:

Пользователь:

EMAIL VARCHAR, 
NAME STRING 

Адрес:

EMAIL VARCHAR, 
CITY VARCHAR, 
ADDRESS VARCHAR 

где EMAIL является внешним ключом.

Поскольку JSON i получает только 5 значений, когда среда воспроизведения сохраняет новую запись в базу данных, в Address она сохраняет только CITY и ADDRESS, а поле EMAIL сохраняется как null. И позже я не могу получить значение элемента Address соответствующей записи пользователя, так как внешний ключ, который их соединяет, сохраняется как null. (Это 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

Почему бы вам не попробовать экономить Адрес первый, а затем, когда объект Адрес управлялся ОРМ множества объектов адрес объекта пользователя и сохранить объект User.

Что-то вроде этого:

  • синтаксического анализа JSON в объект пользователя
  • получить Адрес от пользователя объекта разобран.
  • Упорство Адрес объект
  • набор Адрес объект пользователя объект снова
  • Упорство пользователя объекта.

Надеюсь, это могло бы помочь.

+0

Спасибо, я был немного «слеп», чтобы не видеть это решение. Я думал, что есть способ решить это с помощью аннотаций, и я не думал о других возможностях. – xpg94