deleteByField查询方法失败,尽管表有值



在我的春季启动应用程序中,我使用查询方法deleteByCollectioId(someValue)(其中CollectionId是字段名)删除给定值的DB中存在的所有条目。

@Transactional
@Modifying
void deleteByCollectionId(Long collectionId);

这段代码工作了很多天,但最近几次,这开始给我一个错误说

批量更新update[0]返回意外行数;实际行数:2;预期:1;org.hibernate.jdbc.BatchedTooManyRowsAffectedException:批量更新从update[0]返回意外的行数;实际行数:2;预期:1

我无法找到根本原因,因为这个错误大多数时候是不可重复的。在实体类或代码有什么错误吗?

实体类

@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
@ToString(doNotUseGetters = true)
@NoArgsConstructor
@AllArgsConstructor
@EqualsAndHashCode
@Builder
@Entity
@Table(name = "myCollection")
public class Collection {
@Id
@Column(name = "id")
@GeneratedValue(generator = "auto_inc_id")
@GenericGenerator(name = "auto_inc_id", strategy = "increment")
private Long id;

@Column(name = "collection_id")
@JsonProperty(value = "collection_id")
private Long collectionId;
..
..
..
}

注意:这里collectionId在多行中不是唯一的,可以有多个行具有相同的collectionId

是否有可能在所有集合中集合ID不是唯一的?您的主键似乎是id。如何保证集合ID是唯一的?

你可能想实现你自己的equals/hash方法。

你也不需要@Modifying注释。它只在使用Query注释时使用。Spring Data Doc

相关内容

  • 没有找到相关文章

最新更新