Java 休眠引用FK中的嵌入ID列

Java 休眠引用FK中的嵌入ID列,java,mysql,entity-framework,hibernate,jpa,Java,Mysql,Entity Framework,Hibernate,Jpa,映射不同实体类的多个@EmbeddedId列时遇到问题。我有一个如下的实体结构(为了可读性简化了实体) 实体:行动 此实体的@EmbeddedId定义如下: @Embeddable private class ActionId implements Serializable { @ManyToOne private Operation operation; private HttpMethod method; } 这里pk列之间的映射工作正常。当我尝试将另一个实体(链接表)

映射不同实体类的多个
@EmbeddedId
列时遇到问题。我有一个如下的实体结构(为了可读性简化了实体)

实体:行动 此实体的
@EmbeddedId
定义如下:

@Embeddable
private class ActionId implements Serializable {

    @ManyToOne private Operation operation;
    private HttpMethod method;

}
这里pk列之间的映射工作正常。当我尝试将另一个实体(链接表)添加到
操作
实体时,就会出现问题。此链接表还有一个
@EmbeddedId

实体:用户操作
@EmbeddedId
类如下所示:

@Embeddable
private class UserActionId implements Serializable {

    @ManyToOne private Action action;
    @ManyToOne private User user;


}
如何引用Action类的
@EmbeddedId
字段,但其中只有一列是联接列。
ActionId
类中的另一列是常规的
@列

我试过这个:

@AssociationOverrides({ 
    @AssociationOverride(name = "pk.action.pk.operation", joinColumns = @JoinColumn(name = "id_operation", nullable = false)) })
但这给了我一个错误:

导致:org.hibernate.MappingException:外键(FK_gwvslpytxm695kdw5lxqneyss:user_action[useraction])必须与引用的主键(useraction[id_operation,http_method])具有相同的列数 位于org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:110) 位于org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:93) 位于org.hibernate.cfg.Configuration.SecondPassCompileForeKeys(Configuration.java:1816) 位于org.hibernate.cfg.Configuration.originalSecondPassCompile(Configuration.java:1739) 位于org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1424) 位于org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1844) 位于org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl$4.perform(EntityManagerFactoryBuilderImpl.java:850)


如何覆盖UserAction实体中的
ActionId
类的另一个非联接列
方法
关联?

我遇到了与此类似的问题,这有帮助:我遇到了与此类似的问题,这有帮助:
@Embeddable
private class UserActionId implements Serializable {

    @ManyToOne private Action action;
    @ManyToOne private User user;


}
@AssociationOverrides({ 
    @AssociationOverride(name = "pk.action.pk.operation", joinColumns = @JoinColumn(name = "id_operation", nullable = false)) })