具有2个外键和一个附加属性的JPA复合键(也是主键的一部分)

我一直试图在JPA(eclipselink)中实现类似于以下结构的东西:

class PrimaryInfo {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(cascade = CascadeType.ALL,fetch = FetchType.EAGER,mappedBy = "primaryInfo",orphanRemoval = true)
    private List<PrimaryInfoClubCode> clubCodes = new ArrayList<>();
}
class ClubCode {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @OneToMany(cascade = CascadeType.ALL,mappedBy = "clubCode",orphanRemoval = true)
    private List<PrimaryInfoClubCode> holdingPrimaryInfos = new ArrayList<>();

    private String code;

    private String description;
}

通过使用以下EmbeddedId和联接表:

@Embeddable
class PrimaryInfoClubCodeId implements Serializable {
    private Long primaryInfoId;

    private Long clubCodeId;
}
class PrimaryInfoClubCode {
    @EmbeddedId
    private PrimaryInfoClubCodeId id;

    @ManyToOne(fetch = FetchType.EAGER)
    @MapsId("primaryInfoId")
    private PrimaryInfo primaryInfo;

    @ManyToOne(fetch = FetchType.EAGER)
    @MapsId("clubCodeId")
    private ClubCode clubCode;

    private Long counter;
}

我现在遇到的问题是,我希望计数器成为主键的一部分,以便允许PrimaryInfo拥有ClubCode的多个条目,只要它们具有一个不同的counter值。

下面的SQL是从上面的设置生成的,我相信这是问题的根源,因为它应该更新三个值中的任何一个而不是仅更新计数器,因为三个值中的任何一个都可以更改。

  

UPDATE PRIMARY_INFO_CLUB_CODE SET COUNTER =吗?在哪里((CLUB_CODE_ID =?)AND(PRIMARY_INFO_ID =?))

我不确定该怎么做,并且很难弄清楚。 我没睡很多,所以我希望这很有意义。

任何帮助将不胜感激。

p82591942 回答:具有2个外键和一个附加属性的JPA复合键(也是主键的一部分)

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3160439.html

大家都在问