gpt4 book ai didi

hibernate - Nested embeddable - 可嵌入的 AttributeOverride

转载 作者:行者123 更新时间:2023-12-03 19:54:31 26 4
gpt4 key购买 nike

我有类 Money 这是一个@Embeddable

@Embeddable
public class Money implements Serializable, Comparable<Money> {
@Column(name = "amount", precision = 15, scale = 2)
private BigDecimal amount;
}

当我在实体内多次使用它时,一切正常。例如
@Entity
public class SomeEntity implements Serializable {

@Embedded
@AttributeOverride(name = "amount", column = @Column(name = "entry"))
private Money entryValue;

@Embedded
@AttributeOverride(name = "amount", column = @Column(name = "leave"))
private Money leaveValue;
}

上面的代码完美运行。

现在,当我有另一个 @Embeddable 我想在其中包含 Money 实例并且 @Embeddable 被实体多次使用时,就会出现问题。例子:
  • 可嵌入
    @Embeddable
    public class ReportCostValues implements Serializable {

    @Embedded
    @AttributeOverride(name = "amount", column = @Column(name = "covered_by_grant"))
    private Money coveredByGrant;

    @Embedded
    @AttributeOverride(name = "amount", column = @Column(name = "own_resources"))
    private Money foundedFromOwnResources;

    @Embedded
    @AttributeOverride(name = "amount", column = @Column(name = "personal_contribution"))
    private Money personalContribution;
  • 实体
     @Entity
    public class ReportCostEntity implements Identifiable<Long>, Serializable {

    @Id
    private Long id;

    @Embedded
    private ReportCostValues contracted;

    @Embedded
    private ReportCostValues current;

    @Embedded
    private ReportCostValues previousReport;

  • 上面的这段代码不起作用。任何想法如何解决这个问题?

    最佳答案

    嗨,你必须使用 @AttributeOverrides在司法上,您必须再次覆盖您在可嵌入 ReportCostValues 中所做的实体中的属性类,希望下面的代码是您正在寻找的。

    @Entity 
    public class ReportCostEntity implements Serializable {

    @Id
    private Long id;

    @Embedded
    @AttributeOverrides( {
    @AttributeOverride(name="coveredByGrant.amount", column = @Column(name="contracted_coveredByGrant") ),
    @AttributeOverride(name="foundedFromOwnResources.amount", column = @Column(name="contracted_foundedFromOwnResources")),
    @AttributeOverride(name="personalContribution.amount", column = @Column(name="contracted_personalContribution"))
    } )
    private ReportCostValues contracted;

    @Embedded
    @AttributeOverrides( {
    @AttributeOverride(name="coveredByGrant.amount", column = @Column(name="current_coveredByGrant") ),
    @AttributeOverride(name="foundedFromOwnResources.amount", column = @Column(name="current_foundedFromOwnResources")),
    @AttributeOverride(name="personalContribution.amount", column = @Column(name="current_personalContribution"))
    } )
    private ReportCostValues current;

    @Embedded
    @AttributeOverrides( {
    @AttributeOverride(name="coveredByGrant.amount", column = @Column(name="previousReport_coveredByGrant") ),
    @AttributeOverride(name="foundedFromOwnResources.amount", column = @Column(name="previousReport_foundedFromOwnResources")),
    @AttributeOverride(name="personalContribution.amount", column = @Column(name="previousReport_personalContribution"))
    } )
    private ReportCostValues previousReport;




    }

    希望这可以帮助 !!!!!

    关于hibernate - Nested embeddable - 可嵌入的 AttributeOverride,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9845575/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com