我正在使用orm lite库,通过这种方式在一对多关系中非常好:
@DatabaseTable(tableName = "a")
class A {
@DatabaseField(id = true)
private Integer id;
...
}
@DatabaseTable(tableName = "b")
class B {
@DatabaseField(id = true)
private Integer id;
@DatabaseField(foreign = true, foreignAutoRefresh = true, columnName = "a_id")
private A a;
...
}
现在,我如何创建多对多关系?我有一些想法,但我做不到, 想法 - 我以这种方式创建了A,B和AB类
@DatabaseTable(tableName = "a")
class A {
@DatabaseField(id = true)
private Integer id;
...
}
@DatabaseTable(tableName = "b")
class B {
@DatabaseField(id = true)
private Integer id;
...
}
@DatabaseTable(tableName = "ab")
class AB {
@DatabaseField(id = true)
private Integer id;
@DatabaseField(foreign = true, foreignAutoRefresh = true, columnName = "a_id")
private A a;
@DatabaseField(foreign = true, foreignAutoRefresh = true, columnName = "b_id")
private B b;
}
我想把AB类的主键作为主键(a,b)并删除id列或make uniuqe(a,b)我可以做任何一个吗?
答案 0 :(得分:1)
1
。我认为在ORMLite中实现多对多关系的唯一方法 - 使用你建议的第三个表。你可以看一下这个答案:https://stackoverflow.com/a/9179937/5318705
2。我这次没有可能创建复合PK。但是,无论如何,您可以将伪ID字段保留为PRIMARY KEY并使用uniqueCombo约束:
...
@DatabaseField(id = true)
private Long dummyId;
@DatabaseField(uniqueCombo = true)
private Integer idA;
@DatabaseField(uniqueCombo = true)
private Integer idB;
...