gpt4 book ai didi

playframework-2.0 - 使用 Join 表创建单向 OneToMany 关系

转载 作者:行者123 更新时间:2023-12-02 22:28:32 24 4
gpt4 key购买 nike

我有一个用户表和兴趣表,兴趣表中的行数有限,我正在尝试为每个用户都有一组兴趣的场景建模,这是我的代码:

@Entity 
@Table(name="user")
public class User extends Model{
@OneToMany(cascade = CascadeType.PERSIST)
@JoinTable(name="user_interest")
public List<Interest> interests;
}


@Entity
@Table(name="interest")
public class Interest extends Model{
@Id
public Long id;
public String name;
public String image;
}

当然我想要联合表,但进化忽略了创建联合表并试图通过在兴趣表中添加一个额外的列来做到这一点。这是

create table interest (
19 id bigint auto_increment not null,
20 user_id bigint not null,
21 name varchar(255),
22 image varchar(255),
23 constraint pk_interest primary key (id))
.

我做错了什么??我如何使用ebean在play2.2中创建一个简单的OneToMany关系WITH连接表?

感谢和问候

最佳答案

这是正确的行为,User 模型中的@OneToMany 关系可以读作Interest 中的@ManyToOne > 模型,字面意思是“每个兴趣可能只属于一个用户”,所以如果 Interest 包含带有用户 ID 的字段就足够了 - 在本例中为 user_id

连接表用于存储 MM 关系,因此要强制使用连接表,您只需将 User 模型中的关系更改为 @ManyToMany,因此它将自动为您创建您想要的。当然,如果每个兴趣都可以与唯一的一个用户合并,那将没有任何意义,因为如果给定的兴趣尚未与其他人合并,则您需要在保存时进行控制。

顺便说一句:两个提示:

  1. 如果你的模型有相同的名字,你不需要使用@Table(name="interest")注解,Ebean会自动创建它
  2. 如果你打算在未来转移到 postgress(即在 Heroku 上),将 User 模型的表名更改为 users(或其他名称)作为 user 是PG中的关键字,会引起冲突。

关于playframework-2.0 - 使用 Join 表创建单向 OneToMany 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12634471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com