Spring数据rest将元素添加到集合

Spring数据rest将元素添加到集合,spring,spring-data,spring-data-rest,Spring,Spring Data,Spring Data Rest,我试图在Spring Data Rest上向@OneToMany关系添加一个元素,我使用下面的请求向用户帐户集合添加一个帐户 curl -v -X PUT -H "Content-Type: text/uri-list" -d "http://localhost:8080/account/1" http://localhost:8080/user/1/accounts 当我检查用户帐户列表时,请求以204进行响应,并且没有任何更改。调试应用程序时,我可以看到实体正在保存,因此可能没有发生事务提

我试图在Spring Data Rest上向@OneToMany关系添加一个元素,我使用下面的请求向用户帐户集合添加一个帐户

curl -v -X PUT -H "Content-Type: text/uri-list" -d "http://localhost:8080/account/1" http://localhost:8080/user/1/accounts
当我检查用户帐户列表时,请求以204进行响应,并且没有任何更改。调试应用程序时,我可以看到实体正在保存,因此可能没有发生事务提交。我还注意到,如果我将关系更改为@OneToOne,请求将按预期工作

用户类

存储库

@RepositoryRestResource(collectionResourceRel=“accounts”,path=“account”)
公共接口AccountRepository扩展了分页和排序存储库{}
@RepositoryRestResource(collectionResourceRel=“users”,path=“user”)
公共接口UserRepository扩展了分页和排序存储库{}

尝试在您的帖子或PUT/PATCH请求中使用类似此正文的内容:

{
    // user properties...
    "accounts": [
            "http://localhost:8080/accounts/1",
            "http://localhost:8080/accounts/2"
        ]
}
要创建新用户(使用其帐户),请使用POST请求


要更新当前用户(及其帐户),请使用PUT/PATCH request To(1-是当前用户的ID)

谢谢您的回答,我知道您的建议有效,但这不在我的问题范围内。我正在尝试理解/使用我在问题中链接的文档中可以找到的内容。这对于我来说,Spring Boot 1.5.2和Spring Data REST 2.6.1以及多态性不再适用。可能是一个Lombok问题。尝试手动设置器和获取器这可能是由于这种关系是双向的。如果在代码中执行此操作,则需要设置关系的两侧,以使关系正确级联。您是否可以尝试删除从帐户到所有者的反向引用,以查看这是否会影响结果?如果这证实了原因,请参见此处的解释和可能的解决方法:谢谢@AlanHay!另一个帖子做了这个把戏,这个解决方案有点奇怪,也许我可以在将来找到更好的解决方案(如果有)。在这种情况下,删除双向是一种选择,但可能不会出现在未来的另一种情况中,并且使用@PreUpdate/@PrePersist感觉不正确,我认为我不需要使用它(两种解决方案都有效)
@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode(of = "id", callSuper = false)
@SequenceGenerator(name = "account_sq", sequenceName = "account_sq")
public final class Account extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "account_sq")
    private Long id;

    //other properties

    @ManyToOne
    private User owner;    
}
@RepositoryRestResource(collectionResourceRel = "accounts", path = "account")
public interface AccountRepository extends PagingAndSortingRepository<Account, Long> {}

@RepositoryRestResource(collectionResourceRel = "users", path = "user")
public interface UserRepository extends PagingAndSortingRepository<User, Long> {}
{
    // user properties...
    "accounts": [
            "http://localhost:8080/accounts/1",
            "http://localhost:8080/accounts/2"
        ]
}