我有一个使用联接表建模的一对多关系:
create table t1 (id int primary key, name varchar(10) /*...*/);
create table t2 (id int primary key, name varchar(10) /*...*/);
create table t1_t2 (t1_id int, t2_id int, primary key (t1, t2));
这些表应该模拟一个t1与多个t2的关系。使用JPA为这些表建模的正确方法是什么?
一个T1到多个T2的典型表是在T2上有一个指向T1的外键。通常不需要T1_T2表。
这样,JPA结构将是一对多的,可能是双向的。
可能会有一些安排,以使您描述的结构起作用。您可以更改T1_T2:
那真的是你想要的吗?
编辑 :是的,这就是您想要的;-)
我怀疑您会在网上找到许多例子。我没有经过证明的解决方案,但是我会尝试以下方法:
在Hibernate批注参考文档中,请参阅“ 2.2.5.3.2.3。具有连接表的单向”以了解该想法。看起来像:
@Entity
public class Trainer {
@OneToMany
@JoinTable(
name="TrainedMonkeys",
joinColumns = @JoinColumn( name="trainer_id"),
inverseJoinColumns = @JoinColumn( name="monkey_id")
)
public Set<Monkey> getTrainedMonkeys() {
...
}
我有两个多对多关联的表。 DB详细信息:用户-->列[Id,name]
比如我们有一个用户表,每个用户都可以发布文章,用户和文章就是一对多的关系。 当然imi-demo里一对多的例子选的不好,不过不重要,理解意思就行。 定义 一对多关联会用到的注解: @OneToMany、@JoinFrom、@JoinTo、@AutoSelect、@AutoInsert、@AutoUpdate、@AutoSave、@AutoDelete 如 imi-demo 中代码所示,UserWi
一对多关联 关联定义 一对多关联的情况也比较常见,使用hasMany方法定义,参数包括: hasMany('关联模型','外键','主键'); 除了关联模型外,其它参数都是可选。 关联模型(必须):模型名或者模型类名 外键:关联模型外键,默认的外键名规则是当前模型名+_id 主键:当前模型主键,一般会自动获取也可以指定传入 例如一篇文章可以有多个评论 <?php namespace app\ind
问题内容: 我想在以下(简化的)数据库中应用JPA: 因此,一个节点可以具有多个权限,并且一个权限可以被多个节点引用。 我希望我的班级看起来像这样: 但是注释“ @ManyToMany”似乎仅可用于“ @JoinTable”,在这种情况下,它不可用(据我所知)。有人知道修改数据库之外是否还有其他方法吗? 问题答案: JPA不允许这样做,因为它需要外键来引用完整的主键以用于标识目的,并且它可能不适用
问题内容: 我正在使用Microsoft SQL Server Management Studio,并且在创建联结表时是否应该为联结表创建ID列,如果需要,还应将其设为主键和标识列吗?还是为我要加入的多对多关系表保留2列? 例如,如果这将是多对多表: 我应该制作联结表吗: [并将我的主键用作身份列]? 或者: [并且只保留它没有主键或身份表]? 问题答案: 我将使用第二个联结表: 主键将是两列的组