【问题标题】:Composite key class relationship → ERROR: not mapped to a single property复合键类关系→错误:未映射到单个属性
【发布时间】:2015-04-09 13:34:01
【问题描述】:

CVariacaoTO 类有一个复合键(FK_T、FK_F、FK_F_VARIACAO)。 (FK_F, FK_F_VARIACAO) 也是 FVariacaoTO 表的外键,在多对一关系中。

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumns({
    @JoinColumn(name = "FK_F", referencedColumnName = "FK_F", nullable = false, insertable = false, updatable = false),
    @JoinColumn(name = "FK_F_V", referencedColumnName = "ID", nullable = false, insertable = false, updatable = false) })
@NotNull
private FVariacaoTO fVariacaoTO;

FVariacaoTO 类有两个主键,入一个@Embeddable 类FVariacaoPK。

发生此错误:CVariacaoTO.fVariacaoTO 的 referencedColumnNames(FK_F, ID) 未映射到单个属性

关系只是在 CVariacaoTO 类中描述。 我不知道是否需要在 FVariacaoTO 类中写一些关于关系的东西,制作 @OneToMany 或类似的东西。

这个错误通常是怎么做的? 这种关系通常如何处理?


编辑:附加信息。

在FVariacaoTO类中,key为@EmbeddedId:

@EmbeddedId @AttributeOverrides({ @AttributeOverride(name = "fkF", column = @Column(name = "fkF", nullable = false)), @AttributeOverride(name = "id", column = @Column(name = "id", nullable = false)) }) @NotNull private FVariacaoPK fVariacaoPK;

在 FVariacaoPK 类中,具有此 @EmbeddedId:

@Column(name = "FK_F", nullable = false) private int fkF; @Column(name = "ID", nullable = false) private int id;

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    目前还不能运行应用程序,因为还有其他问题需要解决,但是做下一个方法编译器不再抱怨这个问题:

    @JoinColumn(name = "FK_F", referencedColumnName = "fkF", nullable = false, insertable = false, updatable = false), @JoinColumn(name = "FK_F_V", referencedColumnName = "id", nullable = false, insertable = false, updatable = false)

    我在 referencedColumnName 中设置了 FVariacaoTO 中的字段名称,而不是 FVariacaoPK 中的 @Embedabble 对象

    【讨论】:

    • 如果我在父节点和子节点都有 EmbeddedId(两者都有不同的列),并且我想将 OneToMany 从父节点映射到子节点。我不能使用@JoinColumns,因为一列不在两端。并且不使用 mappedBy 也...有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-23
    • 1970-01-01
    • 1970-01-01
    • 2019-10-03
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    相关资源
    最近更新 更多