当前位置: 首页 > 知识库问答 >
问题:

Neo4j SDN UUID事务处理程序

蓬弘
2023-03-14

问题:

对于SDN,为了使用生成的UUID,我总是必须在事务之外重新加载实体。这限制了@Transactional的有用性。也许有办法解决这个问题吗?

共有1个答案

逑兴安
2023-03-14

你有几个职位

>

  • 在实体构造函数中分配uuid,这样做的好处是您可以在equals和hashcode中安全地使用uuid。

    MyNodeEntity() {
      uuid = UUID.randomUUID.toString()
      ....
    }
    

    使用生命周期事件,对于类似于“如果未设置uuid则添加uuid”的情况非常有用

    @Bean
    ApplicationListener<BeforeSaveEvent> beforeSaveEventApplicationListener() {
        return new ApplicationListener<BeforeSaveEvent>() {
            @Override
            public void onApplicationEvent(BeforeSaveEvent event) {
                MyNodeEntity entity = (MyNodeEntity) event.getEntity();
                if (!entity.hasUuid()) {
                    entity.setUuid(UUID.randomUUID.toString());
                }
            }
        };
    }
    

  •  类似资料:
    • 当使用事务处理时,需要创建 Session 对象。在进行事务处理时,可以混用 ORM 方法和 RAW 方法,如下代码所示: func MyTransactionOps() error { session := engine.NewSession() defer session.Close() // add Begin() before any action

    • 启动事务 $this->db->start(); Swoole::$php->db('slave2')->start(); 提交事务 $this->db->commit(); Swoole::$php->db('slave2')->commit(); 回滚事务 $this->db->rollback(); Swoole::$php->db('slave2')->rollback();

    • 在2.0.0之后我们已经支持事务嵌套了,是通过事务等级去实现的。 1. 开始事务 $model->beginTransaction(); 2. 事务提交 $model->commit(); 3. 事务回滚 $model->rollback();

    • 事务处理(transaction processing) 可以用来维护数据的完整性,保证SQL的操作要么完全执行,要么完全不执行,如果发生错误就进行撤销。 保证数据的完整性。 保证数据不受外影响。 事务处理的几道术语 事务(transaction) 一组SQL语句 退回(rollback)撤销执行SQL语句的过程 提交(commit) 将为执行的SQL语句写入数据库表 保留点(savepoint)

    • ORM 可以简单的进行事务操作 o := NewOrm() err := o.Begin() // 事务处理过程 ... ... // 此过程中的所有使用 o Ormer 对象的查询都在事务处理范围内 if SomeError { err = o.Rollback() } else { err = o.Commit() }

    • 概述 事务(transaction)是由查询和/或更新语句的序列组成。 用 begin、start transaction 开始一个事务,rollback 回滚事务,commit 提交事务。 在开始一个事务后,可以有若干个 SQL 查询或更新语句,每个SQL执行后,还应该有判断是否正确执行的语句,以确定下一步是否回滚,若都被正确执行则最后提交事务。事务一旦回滚,数据库则保持开始事务前状态。就好象一