我有班钱是@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
@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;
}
希望这可以帮助 !!!!!
EJB 3.0提供了将JAVA POJO(Plain Old Java Object)嵌入到实体bean中的选项,并允许使用嵌入式POJO类的方法映射列名。 要嵌入的Java POJO必须注释为@Embeddable。 @Embeddable public class Publisher implements Serializable{ private String name; pri
Embeddable React Widget Easy creation of embeddable widgets - https://seriousben.github.io/embeddable-react-widget Features Full ES6/ES2015 support (with Babel) Package fonts, css, json, javascripts t
问题内容: 我有一个具有以下结构的MySQL数据库(节选): 另外,还有一个USER表,但这并不重要,有了这些表,您可以了解问题的全貌。 如您所见,某些列具有将在类中变为的属性。 并且由于它们与其他表的关系而具有复合主键,因此我无法更改。由于为Composite ,因此映射的类必须具有一个带有相应类的。 问题是我需要在组合的 “本机” 部分中添加一个,例如:必须具有JPA @GeneratedVa
问题内容: 我在Team和Player类之间有一种@OneToMany关系。我想在您的玩家之间保存一个Team对象。玩家的标识符由团队外键和列表索引组成,如下所示。我有一个这样的映射,因为我需要保存Team和您的Players同时吃饭。 所以,如果我使用以下 无论是否使用@ CollectionsOfElements,Player类都需要一个@Embeddable注释,而不是一个@Entity,这
在我的应用程序中,我有一个场景,根据给定的输入代码和日期从实体中获取数据。代码和日期的组合将是唯一的,并将返回单个记录。 请建议。
我将从@Embeddeble Class Certification中选择所有列。但我不能选择它。如何选择可嵌入类。 @嵌入式类认证 如果运行ResultService,则会出现以下异常: 原因:Java . lang . illegalargumentexception:在EntityManager中创建查询时出现异常:异常描述:编译查询时出错[从认证c中选择c]。未知的实体类型[认证]。 如何