복붙노트

[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