【问题标题】:ORMLite foreign @DatabaseField with inverse mapping?ORMLite 外国@DatabaseField 与逆映射?
【发布时间】:2011-06-07 17:55:26
【问题描述】:

我正在实施一个小项目,我想知道 ORMLite 是否支持 @DatabaseMappings 的逆映射。我正在寻找的是这类似于 JPA/Hibernates 的逆映射。下面是一个假设的相当愚蠢的例子,一个表BlogPost

@数据库表 公共类博客帖子{ @DatabaseField(外=真) 私人作者所有者; }

以及相应的Author 类,并不是那么重要:

@DatabaseTable 公共类作者 { }

这会产生以下 SQL(只是相关部分):

CREATE TABLE blogpost ( ... , owner_id INTEGER NOT NULL, ... ) CREATE TABLE author ( ... )

查看表 blogpost 现在如何为作者添加外键。但是,我更喜欢它,即作者应该有一个 blogpost_id 外键。 (我告诉过你这是一个愚蠢的例子......;)。

通过逆映射,我可以利用级联进行删除,但我在 ORMlite 文档中没有找到任何关于此的内容。它不是一个功能还是我只是错过了什么?

【问题讨论】:

  • 对我的回答@ilikeorangutans 有任何反馈吗?
  • 对不起,我有一段时间没做这个了。谢谢您的答复。请参阅下面的我的 cmets。

标签: ormlite


【解决方案1】:

我对这个问题有点困惑,但我想我还是会尝试回答。

我不明白这将如何工作@ilikeorangutans。我假设一个作者有多个博客文章?那么账号频道怎么会有一个blogpost_id呢?您可以有一个包含author_idblogpost_id 的连接表,但这只会增加复杂性。

如果你看看this discussion 和这个webpage,你可以看到Hibernate 的逆映射是关于谁控制关系并负责更新行。在这两种情况下,BlogPost 都会有 author_id,而不是相反。

ORMLite 确实支持“外部集合”的概念,您可以通过将BlogPost 添加到Author 对象中的集合中来将BlogPost 添加到数据库中。如需更多信息,请参阅foreign collection documentation

抱歉,如果我遗漏了什么。

【讨论】:

  • 假设每个帖子只有一位作者。我查看了外国收藏,但他们没有做我想要的。整个想法是,我可以在删除时使用级联来自动删除相关行,例如,如果您删除作者,所有他的帖子都会被删除。不确定这是否有意义
  • 是的,ORMLite 不支持级联。不确定它会不会。很难平衡“精简版”和人们想要的功能。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-14
  • 2014-11-22
  • 2018-02-22
  • 1970-01-01
相关资源
最近更新 更多