[SPRING] 새 엔티티 + 연결 생성 중 작동하지 않음
SPRING새 엔티티 + 연결 생성 중 작동하지 않음
AppUser와 UserGroup이라는 두 엔티티가 있습니다. 그들은 @ManyToMany 관계가 있습니다.
나는 현재 다음과 같이 기존 사용자를 위해 새 그룹을 만들고 연결하려고합니다.
POST http://localhost:8080/groups
{
"name": "Group 1",
"users": ["http://localhost:8080/users/1"]
}
문제는 그룹 만 생성되지만 목록에있는 사용자와의 연관은 없으며 서버가 여전히 생성됨을 확인하는 것입니다.
이들은 두 개의 리파지토리입니다 :
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface AppUserRepository extends JpaRepository<AppUser, Long> {
AppUser findByUsername(@Param("username") String username);
}
@RepositoryRestResource(collectionResourceRel = "groups", path = "groups")
public interface UserGroupRepository extends JpaRepository<UserGroup, Long> {
List<UserGroup> findByName(@Param("name") String name);
}
아래에서 관계가 정의 된 방법을 볼 수 있습니다.
AppUser.java
@Column(name="user_group_id")
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "app_user__user_group",
joinColumns = {
@JoinColumn(name = "app_user_id", nullable = false, updatable = false) },
inverseJoinColumns = {
@JoinColumn(name = "user_group_id", nullable = false, updatable = false)})
private Set<UserGroup> groups;
UserGroup.java
@Column(name = "app_user_id")
@ManyToMany(fetch = FetchType.LAZY, mappedBy = "groups")
private Set<AppUser> users;
노트 :
사용자 목록이 아닌 문자열 만 전달하면 다음과 같습니다.
POST http://localhost:8080/groups
{
"name": "Group 1",
"users": "http://localhost:8080/users/1"
}
내가 얻는 것은 :
{
"cause": {
"cause": null,
"message": "Cannot deserialize instance of java.util.Set out of VALUE_STRING token at [Source: (org.apache.catalina.connector.CoyoteInputStream); line: 7, column: 12] (through reference chain: mahlzeit.api.hibernate.model.UserGroup["users"])"
},
"message": "JSON parse error: Cannot deserialize instance of java.util.Set out of VALUE_STRING token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.util.Set out of VALUE_STRING token at [Source: (org.apache.catalina.connector.CoyoteInputStream); line: 7, column: 12] (through reference chain: mahlzeit.api.hibernate.model.UserGroup["users"])"
}
해결법
from https://stackoverflow.com/questions/47376620/creating-new-entity-plus-association-not-working by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] websocket 메시지에서 스프링 보안 및 액세스 원칙을 사용하는 안전한 Spring-Websocket (0) | 2019.02.27 |
---|---|
[SPRING] 봄 부팅시 알 수없는 요청을 index.html로 리디렉션 (0) | 2019.02.27 |
[SPRING] 후행 슬래시는 Spring Boot 응용 프로그램에 삽입되지 않습니다. (0) | 2019.02.27 |
[SPRING] Spring Batch Job을 특정 순서 (Spring Boot)로 실행하는 방법? (0) | 2019.02.27 |
[SPRING] Spring JSON은 Spring 프레임 워크가 3.0.2에서 3.2.0으로 업그레이드 될 때 문제를 일으킨다. (0) | 2019.02.27 |