使用ORMLite获得数据库中表示的字符串列表

kra*_*sen 3 ormlite

首先,我是ORMLite的新手.我希望我的模型类有一个字段,它是一个字符串列表,最终会保存我的模型对象的标签列表.我应该使用哪些ORMLite注释?

首先,我不想拥有所有标签的表,然后使用@ForeignCollectionField.我还想到了使用@DatabaseField(dataType=DataType.SERIALIZABLE)注释,但事实证明List<String>它没有实现Serializable接口.

你有什么建议?

Gra*_*ray 8

首先,List没有实现,Serializable但ArrayList肯定和大多数常见的集合实现一样.但是从纯对象模型的角度来看,存储一个巨大的列表可能不是最好的.

那你为什么不想要一张包含所有标签的表呢?从纯粹的模型角度来看,这是最好的方法.如果每次都需要它,它将需要第二个查询.这就是hibernate存储列表或标签数组的方式.


看完你的评论@creen后,我仍然认为你确实需要一个标签表.您的模型类将具有:

@ForeignCollectionField
Collection<Tag> tags;
Run Code Online (Sandbox Code Playgroud)

tags没有一个"red"以多个引用它的模型类命名的标记,而是多个"red"条目.它看起来像:

model_id    name
1           "red"
1           "blue"
2           "red"
3           "blue"
3           "black"
Run Code Online (Sandbox Code Playgroud)

每当您删除模型对象时,您首先要执行的操作tags.clear();将从标记表中删除与该模型关联的所有标记.你不需要做任何额外的清理或任何事情.