我的一些实体有一个
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
但这似乎只针对简单的情况。
这是不可能开箱即用的。如果您有命名方案,您可能应该查看
ImplicitNamingStrategy
,您应该能够访问模型元素的注释(通过一些转换和解析)并生成正确的隐式名称。如果您还想重用列长度配置,您可能必须将其建模为 @Embeddable
,您可以轻松地重用它。
我也很想将其包装到自定义注释中。你找到出路了吗?