Spring数据休息将元素添加到集合中

时间:2017-01-05 12:27:46

标签: spring spring-data spring-data-rest

我尝试在Spring Data Rest上的$min之后向@OneToMany关系添加元素,我使用下面的请求将帐户添加到用户帐户集合。< / p>

function dataFactory () { };
dataFactory.$inject = [];
angular.module('ngHandsontable').service('dataFactory', dataFactory);

function MainCtrl(dataFctory) {
  this.db = { items: [[5, 6], [7, 8]] };
}
MainCtrl.$inject = ['dataFactory'];

angular
  .module('app', ['ngHandsontable'])
  .controller('MainCtrl', MainCtrl);

当我检查用户帐户列表时,请求以204响应并且没有任何变化。调试应用程序我可以看到正在保存实体,因此可能没有发生事务提交。我还注意到,如果我将关系更改为@OneToOne,请求将按预期工作。

  

用户类

curl -v -X PUT -H "Content-Type: text/uri-list" -d "http://localhost:8080/account/1" http://localhost:8080/user/1/accounts
  

帐户类

@Entity
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@ToString(exclude = "accounts")
@EqualsAndHashCode(of = "id", callSuper = false)
@SequenceGenerator(name = "user_sq", sequenceName = "user_sq")
public final class User extends BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "user_sq")
    private Long id;

    //other properties

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "owner", orphanRemoval = true)
    private List<Account> accounts;

//    @OneToOne(cascade = CascadeType.ALL)
//    private Account accounts;
}
  

存储库

@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;    
}

1 个答案:

答案 0 :(得分:0)

尝试在您的POSt或PUT / PATCH请求中使用此主体:

{
    // user properties...
    "accounts": [
            "http://localhost:8080/accounts/1",
            "http://localhost:8080/accounts/2"
        ]
}

要创建新用户(使用他的帐户),请使用对http://localhost:8080/users

的POST请求

要更新当前用户(及其帐户),请使用PUT / PATCH请求http://localhost:8080/users/1(1 - 是当前用户的ID)