有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

SpringJava。util。收藏。交换(列表<?>列表,int i,int j)不执行任何操作

我有一个JavaSpringMVC,我的一个模型是Category

@Entity
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Category extends AuditModel {
    @JsonView(DataTablesOutput.View.class)
    String name;
    boolean active;
    @Column(columnDefinition = "TEXT")
    String description;
    @Column(length = 70)
    String metaTitle;
    @Column(length = 160)
    String metaDescription;
    String friendlyUrl;
    @OneToMany
    List<Category> secondaryCategories;
    String image;
    Long position;
}

我尝试用java交换secondaryCategories列表中两个类别的位置。util。收藏。交换(List,inti,intj),但什么都没有发生,也没有错误

@Override
public ResponseEntity moveCategoryUpOrDown(Long id, Long parentId, String direction) {
    if (id == parentId) {
        return new ResponseEntity<>("Home category cat't be moved",HttpStatus.BAD_REQUEST);
    }
    Category category = categoryRepository.findOne(id);
    Category parent = categoryRepository.findOne(parentId);
    List<Category> secondaryCategories = parent.getSecondaryCategories();
    if (direction.compareTo("up") == 0) {
        if (secondaryCategories.indexOf(category) <= 0)
            return new ResponseEntity<>(HttpStatus.OK);
        int i = secondaryCategories.indexOf(category);
        int j = secondaryCategories.indexOf(category) - 1;
//            Category previous = secondaryCategories.get(j);
        Collections.swap(secondaryCategories, i, j);
//            categoryRepository.saveAndFlush(previous);
//            categoryRepository.saveAndFlush(category);
        categoryRepository.saveAndFlush(parent);
    }
... etc ..

我还尝试了EntityManager在交换之前分离对象,但没有成功。我制定了自己的交换方法,但无法交换

如何在secondaryCategories中交换两个类别


共 (1) 个答案

  1. # 1 楼答案

    您需要更新它们的position字段,或者任何设置实体顺序的字段。从ORM的角度来看,更改集合的顺序毫无意义