Using the same embeddable class in the same table

An example of usage of AttributeOverride annotation.

Simple embeddable class

@Embeddable
@Access(AccessType.FIELD)
data class Price(

    @Column(name = "price_current")
    val current: BigDecimal = BigDecimal.ZERO,

    @Column(name = "price_strike")
    val strike: BigDecimal = BigDecimal.ZERO,

)

An example of usage

data class Entity(

    @AttributeOverrides(
        value = [
            AttributeOverride(name = "current", column = Column(name = "previous_price_current")),
            AttributeOverride(name = "strike", column = Column(name = "previous_price_strike")),
        ]
    )
    @Embedded
    var previousPrice: Price,

    @AttributeOverrides(
        value = [
            AttributeOverride(name = "current", column = Column(name = "new_price_current")),
            AttributeOverride(name = "strike", column = Column(name = "new_price_strike")),
        ]
    )
    @Embedded
    var newPrice: Price
)