0 0

如何使JPA不对OneToMany关系创建关联表?0

我的JPA实现是Hinbernate,在我的是entity上有一个OneToMany的注释

Company类定义

    @OneToMany(mappedBy = "company")    
    private List<User> users = new ArrayList<User>();


User类定义
    @ManyToOne
    @JoinColumn(name = "COMPANY_ID", nullable = false)
    @NotNull
    private Company company;


create table Users(
  id integer primary key,
  company_id integer,
  name varchar(20)
)

create table Companies(
  id integer primary key,
  name varchar(20)
)


当系统启动后,JPA总会为我创建一张关联表COMPANIES_USERS,我不想要这张表,如何实现。我只想通过外键让Company对象能查到自己有哪些所属User。

在网上看到有人说加上mappedBy, 但是JPA还是为我创建了关联表。
  @OneToMany(mappedBy = "company")
2013年5月06日 14:34

3个答案 按时间排序 按投票排序

0 0

@OneToMany(mappedBy = "company") 
@JoinColumn(name="company_id")
private List<User> users = new ArrayList<User>(); 

2013年5月11日 21:09
0 0

你这个应该是自动生成的sql吧?
如果使用jpa,不想通过中间表建立关联,你上面的注解没有问题的。
你重启之前,先把那个中间表drop掉,然后再重启,看看可自动生成了

2013年5月06日 15:06
0 0

因为你是 @ManyToOne    从另一边看是@OneToMany  即1:多 需要使用管理表

从你的这个sql上看 你需要的是1:1
create table Users( 
  id integer primary key, 
  company_id integer, 
  name varchar(20) 

2013年5月06日 14:59

相关推荐

Global site tag (gtag.js) - Google Analytics