我一直在努力让dbmetal处理我的sqlite数据库。我终于解决了这个问题。它不允许一个表对同一列有两个外键引用。
例如,具有这两个表的sqlite数据库将失败:
CREATE TABLE Person
(
Id INTEGER PRIMARY KEY,
Name TEXT NOT NULL
);
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL REFERENCES Person(Id)
);
我得到这个错误:
dbmetal:序列包含多个匹配元素
如果去掉第二个外键引用,则不会发生错误。
所以,这是有效的:
CREATE TABLE Match
(
Id INTEGER PRIMARY KEY,
WinnerPersonId INTEGER NOT NULL REFERENCES Person(Id),
LoserPersonId INTEGER NOT NULL
);
但是我真的需要两个“person”列来引用person表。
我提交了
bug report
但我需要一个解决办法。有什么想法吗?