我有一个这样定义的实体:
@Entity
data class Data(
@PrimaryKey(autoGenerate = true) val uid: Int = 0,
var name: String,
)
然后我使用这种方法将实例插入数据库中
@Insert
fun insert(data: Data)
插入实例可能如下所示:
MainActivity.db.dao().insert(Data(0, "Blub"))
现在,我想知道插入时自动生成的主键。我如何获得它?
答案 0 :(得分:3)
使用:
@Test
public void nestedMapFlattenerTest() {
Map<Integer, Map<Integer, Map<Integer, Integer>>> threeFoldNestMap = new HashMap<Integer, Map<Integer, Map<Integer, Integer>>>() {{
put(
1,
new HashMap<Integer, Map<Integer, Integer>>() {{
put(
11,
new HashMap<Integer, Integer>() {{
put(111, 1110);
put(112, 1120);
}}
);
put(
12,
new HashMap<Integer, Integer>() {{
put(121, 1210);
put(122, 1220);
}}
);
}}
);
put(
2,
new HashMap<Integer, Map<Integer, Integer>>() {{
put(
21,
new HashMap<Integer, Integer>() {{
put(211, 2110);
put(212, 2120);
}}
);
put(
22,
new HashMap<Integer, Integer>() {{
put(221, 2210);
put(222, 2220);
}}
);
}}
);
put(
3,
new HashMap<Integer, Map<Integer, Integer>>() {{
put(
31,
new HashMap<Integer, Integer>() {{
put(311, 3110);
put(312, 3120);
}}
);
put(
32,
new HashMap<Integer, Integer>() {{
put(321, 3210);
put(322, 3220);
}}
);
}}
);
}};
nestedMapFlattener(threeFoldNestMap)
.map(o -> (Map.Entry<Integer, Map.Entry<Integer, Map.Entry<Integer, Integer>>>) o)
.map(o -> "" + o.getKey() + " " + o.getValue().getKey() + " " + o.getValue().getValue().getKey() + " " + o.getValue().getValue().getValue())
.forEach(System.out::println);
//prints:
//1 11 112 1120
//1 11 111 1110
//1 12 121 1210
//1 12 122 1220
//2 21 211 2110
//2 21 212 2120
//2 22 221 2210
//2 22 222 2220
//3 32 321 3210
//3 32 322 3220
//3 31 311 3110
//3 31 312 3120
}
这将返回rowId。 rowId不一定是您的整数,but it will be a primary key我认为它始终与自动生成的整数相同,但是我找不到关于它的任何真实文档。