代码之家  ›  专栏  ›  技术社区  ›  Christ-OFF

Hibernate ManyToMany在更新时出现连接表问题

  •  1
  • Christ-OFF  · 技术社区  · 17 年前

    我正试图使许多协会为所有CRUD操作工作。我有两个实体: Places 和 Events

    地点可以容纳多个事件,一个事件可以在多个地点发生。

    在第一种情况下,我有

    在课堂上

    @ManyToOne(  
        targetEntity=EventDto.class,  
        cascade = { CascadeType.PERSIST, CascadeType.MERGE })  
    @JoinTable(  
        name = "EVENTS_PLACES",  
        joinColumns = { @JoinColumn(name = "PLACE_ID") },  
        inverseJoinColumns = { @JoinColumn(name = "EVENT_ID") })  
    private List<EventDto> events;
    

    上课地点:

    @JoinTable(name = "EVENTS_PLACES", joinColumns = @JoinColumn(name = "EVENT_ID"), inverseJoinColumns = @JoinColumn(name = "PLACE_ID"))
    private List<PlaceDto> places;
    

    在这种情况下,在更新地点时,地点与其事件之间的链接被删除
    DELETE FROM EVENTS_PLACES where ... 陈述

    第二种情况

    @ManyToMany (
       mappedBy = "events",  
       cascade = { CascadeType.PERSIST, CascadeType.MERGE },  
       fetch = FetchType.LAZY,  
       targetEntity = FundDto.class)  
    private List<PlaceDto> places;
    

    当更新一个地方时,一切似乎都很好, 但当我尝试创建一个事件时,它也尝试创建一个地方
    =>这会导致主键冲突。

    我使用eclipse重写了hashcode()和equals()。

    谢谢你的帮助。

    克里斯托弗

    1 回复  |  直到 7 年前
        1
  •  5
  •   Gregory Mostizky    17 年前

    这是一个很好的例子 example

    只要试着将他们的代码复制到你自己的代码中,它就会起作用。