【问题标题】:Spring JPA override mechanism when entites have the same name实体具有相同名称时的 Spring JPA 覆盖机制
【发布时间】:2020-06-07 06:43:29
【问题描述】:
是否有可能存在具有相同名称的重复实体?如果满足特定条件,只有其中一个会被注册?
原因如下:
基于某些数据库配置,应使用客户特定的基本实体实现。
也许这个问题有更好的解决方案。
例如
@Entity(name="basicentity")
public class IntegrationBasicResource extends BaseAuditEntity {
@Entity(name="basicentity")
public class CustomerIntegrationBasicResource extends BaseAuditEntity {
【问题讨论】:
标签:
spring
jpa
duplicates
overriding
entity
【解决方案1】:
这可以通过拆分不同包中的实体并在不同的@Configuration 类上使用@EntityScan 和@ConditionalOnProperty 之间的组合来实现。
@Configuration
@ConditionalOnProperty(value="client.type", havingValue="a")
@EntityScan("com.test.database.client.a")
public class EntityConfigClientTypeA {
...
}
如果通过属性设置不适合您的用例,则有多种类型的 @ConditionalOn... 注释。