2012-04-22 46 views
0

我有以下表格: 标签,员工,位置。 员工和位置可以有更多标签。我认为最好为这些关系创建新表:employee_tag和location_tag。JPA ManyToOne在新表中

如何使用JPA执行此操作?现在,我得到这个: Employee类:

@OneToMany() 
@JoinTable(name="employee_tag", joinColumns={ 
    @JoinColumn(name="ID_employee", referencedColumnName="ID") 
}, inverseJoinColumns={ 
    @JoinColumn(name="ID_tag", referencedColumnName="ID") 
}) 
private Collection<Tag> tags; 

标签类:

@ManyToOne() 
private Employee employee; 

它创建了一个新表命名employee_tag但标签仍然有一列EMPLOYEE_ID。如何将标签链接到此表?

+1

见http://stackoverflow.com/questions/5165743/spring-roo-hibernate-一对多关系创建附加表 – axtavt 2012-04-22 14:11:09

+0

Oke很好,所以我想要的几乎是默认的。但标签表中仍然有一个employee_ID。 – Klaasvaak 2012-04-22 19:19:57

回答

1

如果您需要单向一对多关联,则您不必将员工关联放入标记类中,您必须在Employee类中声明关联。

@Entity 
public class Employee { 
    @OneToMany() 
    @JoinTable(name="employee_tag", joinColumns={ 
    @JoinColumn(name="ID_employee", referencedColumnName="ID") 
    }, inverseJoinColumns={ 
    @JoinColumn(name="ID_tag", referencedColumnName="ID") 
    }) 
    public Collection<Tag> tags; 
    ... 
} 

@Entity 
public class Tag {  
    ... 
} 

否则,你可以如下做到双向关联:

@Entity 
public class Employee { 
    @OneToMany(mappedBy="troop") 
    public Collection<Tag> tags; 
    ... 
} 

@Entity 
public class Tag { 
    @ManyToOne 
    @JoinColumn(name="employee_fk") 
    public Employee employee; 
    ... 
} 

看看hibernate annotations doc

相关问题