如何在Spring数据JPA实体中映射同一字段的多个复合键?

时间:2018-07-17 14:31:02

标签: hibernate jpa spring-data-jpa

请注意,以下表格仅作为示例,因为我不能分享实际的表格。 例: 我有两个表(用户,事件)和两个映射表(user_event_map)。 用户:具有(user_id,org_id)的复合主键 事件:具有(event_id,org_id)的复合主键

现在,我应该在映射表user_event_map中的两个表上方进行映射。 user_event_map字段:

user_event_map_id
user_id
event_id
org_id

我尝试如下:

@Entity
@Table(name = "user_event_map")
public class UserEventMap{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "user_event_map_id")
    private Long userEventMapId;

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "user_id", referencedColumnName = "user_id"),
            @JoinColumn(name = "org_id", referencedColumnName = "org_id") })
    private UserType userType;

    @ManyToOne
    @JoinColumns({ @JoinColumn(name = "event_id", referencedColumnName = "event_id"),
            @JoinColumn(name = "org_id", referencedColumnName = "org_id") })
    private Event event;
    ......

}

我收到如下异常:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: 

如果我按以下方式更改了映射(又添加了一个org_id):

user_event_map_id
user_id
event_id
user_org_id
event_org_id

它按预期工作。

我只想在映射表中使用一个org_id并将其用于2个表的外键。

user_event_map_id
user_id
event_id
org_id

我能够如上所述创建表,但是无法在Spring Data JPA实体中对其进行配置。

有什么办法吗?

0 个答案:

没有答案