Предоставление идентификатора отношения как части полезной нагрузки JSON для вызовов GET, PUT и POST REST - PullRequest
0 голосов
/ 10 апреля 2019

Я переучиваю Java, Springboot в личном проекте.У меня есть объект с именем User, который управляется через автоматически сгенерированные леса из jHipster.У меня также есть UserProfile, который является сущностью, которую я создал для хранения дополнительных данных (поскольку я не хотел возиться с объектом User. Теперь, когда я выставляю конечные точки REST для UserProfile, я хочуGET вызывает включение user_id как часть JSON, а вызовы PUT / POST, чтобы принять user_id для UserProfile, выполнить ассоциацию и только после этого сохранить. Используемым ORM является Hibernate / JPA. Что Джексонаннотации я должен использовать, чтобы это произошло?

Мой User объект:

public class User {
    @ToString.Exclude
    @OneToOne(mappedBy = "user", orphanRemoval = true, fetch = FetchType.LAZY)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JsonIgnore
    private UserProfile userProfile;
}

и мой UserProfile класс:

public class UserProfile {
    @ToString.Exclude
    @ApiModelProperty(value = "Linking the UserProfile to the base User object that is used for authentication")
    @OneToOne(optional = false)
    // Note: Not marking with 'NotNull' annotation since we will not want to update the User object when upserting the UerProfile
    @JoinColumn(unique = true, nullable = false, insertable = true, updatable = false)
    @JsonIgnoreProperties("userProfile")
    private User user;
}

Мои версииare: spring_boot_version = 2.0.8.RELEASE hibernate_version = 5.2.17.Final

1 Ответ

0 голосов
/ 10 апреля 2019

Наконец-то я все заработал сам. Этот ТАК пост помог мне решить проблему.И вот мои классы модели предметной области с работающими аннотациями:

public class User {
    @ToString.Exclude
    @OneToOne(mappedBy = "user", orphanRemoval = true, fetch = FetchType.LAZY)
    @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
    @JsonIgnore
    private UserProfile userProfile;
}
public class UserProfile {
    @ToString.Exclude
    @ApiModelProperty(value = "Linking the UserProfile to the base User object that is used for authentication")
    @OneToOne(optional = false)
    // Note: Not marking with 'NotNull' annotation since we will not want to update the User object when upserting the UerProfile
    @JoinColumn(unique = true, nullable = false, insertable = true, updatable = false)
    @JsonIgnoreProperties(value = {"login", "password", "firstName", "lastName", "email", "activated", "langKey", "imageUrl", "resetDate"}, ignoreUnknown = true)
    private User user;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...