【发布时间】:2011-12-27 12:48:21
【问题描述】:
我目前正在制作一个应用程序,我已经开始创建一个 DB 模式,如下所示:
代表多对多关系的表(users_groups_maps、articles_tags_maps reported_articles、favourite_articles 和 browse_later_articles)很少。我创建了一个反向配置文件并开始进行反向工程,以便从中获取 Java 类(注释、JDK 5 和 EJB3,这会产生 javax.persistence.* 注释)。
基本表(如warnings、users)就好了(有字段如
private Set<BrowseLaterArticles> browseLaterArticleses = new HashSet<BrowseLaterArticles>(0);
,但我想这很好 - 我是一个冬眠新手)。
但是,问题(我猜)从那些多对多关系开始(例如 UserGroupsMaps 构造函数看起来像这样:
public UsersGroupsMaps(UsersGroupsMapsId id, Users users, Groups groups) {
this.id = id;
this.users = users;
this.groups = groups;
}
,其中 UserGroupsMapsId 是 userId 和 groupId 对的包装器)
我是不是搞错了,还是应该以不同的方式编码?我知道有一个ManyToMany注解,为什么hibernate不使用它?
//另外,我有不太与休眠相关的问题 - 在 cmets 和 private_messages 表中,有那些 parent__id 字段,应该引用相同表。我为他们自己的表创建了一个外键,但我不确定它是否正确,是吗?它应该是什么样子?在这种情况下,hibernate 会生成两个具有相同名称的字段: 私人评论 cmets; 在评论类中。
问候, 马辛
【问题讨论】:
-
请展开每个 *_maps 表的
Indexes并重新捕获/重新上传图像。 -
Marcin 这正是我遇到的问题。 User 对象应该有一个 Set
属性,而 Group 应该有一个 Set 。无论我做什么,我都会得到这些虚假的中介对象。 Reveng cfg 向导中有一个部分可以调整选定列的映射,但是当它愚蠢地从头开始重新获取整个架构(而不是使用已经选择的表)时,我忽略了它。看起来这可能是该去的地方。 Dagnabbit,现在我注意到这是一个僵尸线程。废话。
标签: hibernate annotations many-to-many reverse-engineering