我有一个租户表,一次只能有一个租户处于活动状态。
要激活租户,我使用以下代码。是否有更好的方法使用spring data mongo更改所有行的特定列。
tenantRepository.save(tenantRepository.findAll().stream().map(t -> {
t.setActive(false);
return t;
}).collect(Collectors.toList()));
tenant.setActive(true);
tenantRepository.save(tenant);
如果要更新Spring data Mongo中的特定列,只需定义自定义存储库接口及其实现,如:
public interface TenantRepositoryCustom {
Integer updateStatus(List<String> id, TenantStatus status, Date date);
}
@Repository
public class TenantRepositoryCustomImpl implements TenantRepositoryCustom{
@Autowired
MongoTemplate template;
@Override
Integer updateStatus(List<String> id, TenantStatus status, Date date) {
WriteResult result = template.updateMulti(new Query(Criteria.where("id").in(ids)),
new Update().set("status", status).set("sentTime", date), Tenant.class);
return result.getN();
}
public interface TenantRepository extends MongoRepository<Tenant, String>, TenantRepositoryCustom{
}
@Service
public class TenantService{
@Autowired
TenantRepository repo;
public void updateList(){
//repo.updateStatus(...)
}
}
与使用@Query相比,这更不容易出错,因为在这里您必须指定列的名称和值,而不是完整的查询。
问题内容: 我正在尝试更新所有以’agg%’和column_name=’%userid%’之类的字符串开头的表…但是即使我能够找到选择具有特定列的所有表的选项,我也看不到在线的此类示例名称和表名称我需要执行相同的操作来更新这些表,如下所示: 帮助将不胜感激。 谢谢。 问题答案: 获取您条件的更新查询 执行
本文向大家介绍MongoDB中如何使用特定字符串更新字段的所有值,包括了MongoDB中如何使用特定字符串更新字段的所有值的使用技巧和注意事项,需要的朋友参考一下 要更新所有值,请将update()与multi:true一起使用。 让我们创建一个包含文档的集合- 在find()方法的帮助下显示集合中的所有文档- 这将产生以下输出- 以下是更新字段“ SubjectName”的所有值的查询- 在f
问题内容: 我想更新表中的一个字段,以便所有行都具有与第一行相同的值。我认为这很简单: 但是MySql不喜欢那样。 问题答案: 您可以将子查询嵌套在另一个查询中:
问题内容: 我一直在尝试更新特定行已有一段时间了,看来有两种方法可以做到这一点。根据我的阅读和尝试,你可以使用: 方法 或者: 方法。 (让我知道这是否不正确,因为我是android新手,还是SQL新手。) 因此,让我了解我的实际代码。 我正在努力做到这一点: 更新主键()等于1的Field1,Field2和Field3。 Eclipse在“更新”一词的正下方给了我一条红线,并给出了以下解释: S
问题内容: 我有一个带有单个主键的表。当我尝试执行插入操作时,尝试插入具有现有键的行可能会导致冲突。我要允许插入更新所有列吗?有什么简单的语法吗?我试图让它“ upsert”所有列。 我正在使用PostgreSQL 9.5.5。 问题答案: 该语法 要求 显式命名目标列。避免这种情况的可能原因: 您有很多列,只是想缩短语法。 除了唯一列,您不 知道 列名。 必须以匹配顺序和匹配数据类型表示 “目标