Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
您能否依赖于从多行插入返回的Android房间ID的顺序_Android_Android Room - Fatal编程技术网

您能否依赖于从多行插入返回的Android房间ID的顺序

您能否依赖于从多行插入返回的Android房间ID的顺序,android,android-room,Android,Android Room,我在当前Android应用程序中使用我的本地数据库空间 我有一个一对多父子表关系,我想插入多个父行,接收自动生成的Id作为列表返回,然后每个父Id插入多个子 我可以相信Room会以与我传递给INSERT语句的父行相同的顺序返回自动生成的父ID吗 我一次接收200个父行,这意味着我不想插入单个父行,因为这种方法会降低性能 是否有任何方法可以插入多个父->子行一个2个多行,并让子行自动接收父自动生成的id 是否有任何方法可以插入多个父->子行一个2个多行,并让子行自动接收父自动生成的id 我怀疑这种

我在当前Android应用程序中使用我的本地数据库空间

我有一个一对多父子表关系,我想插入多个父行,接收自动生成的Id作为列表返回,然后每个父Id插入多个子

我可以相信Room会以与我传递给INSERT语句的父行相同的顺序返回自动生成的父ID吗

我一次接收200个父行,这意味着我不想插入单个父行,因为这种方法会降低性能

是否有任何方法可以插入多个父->子行一个2个多行,并让子行自动接收父自动生成的id

是否有任何方法可以插入多个父->子行一个2个多行,并让子行自动接收父自动生成的id

我怀疑这种方法是否存在。虽然您可以考虑下一个解决方案(当然它有一些缺点,但如果您在特定的情况下是合适的),可以在插入之前获得最大的<代码> ID <代码>,并在代码< >父< /代码>和<代码>子< /代码>实体中明确设置<代码> ID >代码>。假设您有200个项目要插入。您将获得最大电流
id
-1000。然后在第一个父/子对-1001、第二个-1002中设置
id
,以此类推。使用它,您可以在单个
insert
中插入父列表和子列表

我可以相信Room会以与我传递给INSERT语句的父行相同的顺序返回自动生成的父ID吗

你可以。只需查看文件室的方法
insertAndReturnIdsList
,该方法在插入实体列表时调用:

// THIS METHOD IS CALLED WITHIN TRANSACTION WHEN YOU CALL YOUR INSERT-DAO-METHOD
public final List<Long> insertAndReturnIdsList(Collection<? extends T> entities) {
        final SupportSQLiteStatement stmt = acquire();
        try {
            final List<Long> result = new ArrayList<>(entities.size());
            int index = 0;
            for (T entity : entities) { <-- LOOPING LIST OF INSERTED ENTITIES
                bind(stmt, entity);
                result.add(index, stmt.executeInsert()); <-- INSERT ONE-BY-ONE IN ONE TRANSACTION
                index++; <-- INDEX OF RESULT LIST MATCHES INDEX OF ENTITIES LIST
            }
            return result;
        } finally {
            release(stmt);
        }
    }
//当您调用INSERT-DAO-METHOD时,会在事务中调用此方法
公共最终列表insertAndReturnIdsList(集合