假设我有以下各表,在Oracle数据库
富:
+--------+---------+---------+
| id_foo | string1 | string2 |
+--------+---------+---------+
| 1 | foo | bar |
| 2 | baz | bat |
+--------+---------+---------+
酒吧:
+--------+-----------+--------+
| id_bar | id_foo_fk | string |
+--------+-----------+--------+
| 1 | 1 | boo |
| 2 | 1 | bum |
+--------+-----------+--------+
当我插入美孚,通过使用一个数据集和JDBC,如
Dataset<Row> fooDataset = //Dataset is initialized
fooDataset.write().mode(SaveMode.Append).jdbc(url, table, properties)
的ID是自动生成由数据库。现在,当我需要保存Bar
,使用同样的策略,我希望能够链接它Foo
,通过id_foo_fk
。
我看着一些可能性,如使用monotonically_increasing_id()
在this question建议,但不会解决这个问题,因为我需要由数据库生成的ID。我试了一下在this question建议,但它会导致同样的问题,独特的非数据库ID
它也不可能从JDBC再次选择,如string1
和string2
可能不是唯一的。也不可能更改数据库。举例来说,我不能改变它是UUID,我不能为它添加一个触发器。这是一个传统的数据库,我们只能用
我怎样才能做到这一点?这可能与Apache的火花?
我不是一个Java专家,所以你将不得不考虑如何准确地进行数据库层,但有3种方式,你可以这样做: