参数化组合注释

问题描述 投票:0回答:2

使用案例

我的一些实体有一个

Money
字段,即由两个数据库列支持的单个类字段。这是通过以下 Hibernate 注释实现的:

@Columns(
    columns = [
        Column(name = "amount_currency", length = 3, nullable = false),
        Column(name = "amount", nullable = false),
    ],
)
var amount: Money

注释在视觉上很复杂,实际上,我的实体中的所有

Money
字段几乎相同 - 除了列名称。

问题

是否有可能以某种方式消除这种常见模式的重复?我的想法是创建一个组合注释,然后我将使用它,例如

@MoneyColumns(baseName="amount")
var amount: Money

问题是我完全不知道如何定义这样的注释。我最初的想法是使用带有委托的组合注释,如 Spring 的

@AliasFor
但这似乎只针对简单的情况。

java hibernate kotlin jpa annotations
2个回答
0
投票

这是不可能开箱即用的。如果您有命名方案,您可能应该查看

ImplicitNamingStrategy
,您应该能够访问模型元素的注释(通过一些转换和解析)并生成正确的隐式名称。如果您还想重用列长度配置,您可能必须将其建模为
@Embeddable
,您可以轻松地重用它。


0
投票

我也很想将其包装到自定义注释中。你找到出路了吗?

© www.soinside.com 2019 - 2024. All rights reserved.