如何用额外的注释扩展实体?



我有一个像这样的JPA实体:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "user", schema = "users")
public class UserEntity {
@Id
@Column(name = "cd_user", nullable = false)
private UUID cdUser;

...
}

它驻留在maven"模型"上只导入:

的模块
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>

设计是为了保持它非常轻(不导入许多依赖项)。

然后我有一个业务模块导入spring boot, spring boot导入hibernate。

我想用@DynamicUpdate来注释它,以减少数据库对不必要的更改(实体"user")的写。这只是一个例子,在现实中它有很多领域)。

但是我不想在我的模型上导入整个hibernate-core。模块。相反,我想在我的业务模块上注释它,而不重复字段。

这怎么可能?

一如既往,这取决于你想要实现什么。
如果你想在没有hibernate依赖的其他应用程序中重用你的'model'模块,并且你想在你的spring启动hibernate应用程序中使用@DynamicUpdate注释,你可以在spring启动应用程序中创建该实体的子类并注释该子类。
如果你不想在你的'model'模块中使用hibernate依赖,你可以在你的pom中标记hibernate注释。然后你的spring启动应用应该考虑到这个注释,并且其他使用你模块的组件不会有额外的编译时hibernate依赖。

最新更新