gpt4 book ai didi

spring - 当存在两个或多个具有相同名称的实体时选择默认实体 - Spring Boot、Spring Data JPA、

转载 作者:行者123 更新时间:2023-12-05 08:43:24 29 4
gpt4 key购买 nike

我正在使用 spring data jpa 进行持久化。如果存在多个具有相同名称的实体,是否有一种方法可以将一个实体标记为默认值。类似@Primary注解的东西用来解决多个bean的依赖问题

@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
public class DefaultOrganization {
***
}

@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
public class Organization {
***
}

已更新

让我说得更清楚些。我正在使用 spring-boot @EntityScan 注释进行包扫描,如果在两个不同的包中发现两个具有相同名称的实体,那么应该有一种方法可以只选择和注册一个实体,而另一个被拒绝。就实体名称而言,即使我知道没有两个实体可以具有相同的名称。我在 spring-boot 和 spring-data-jpa 的上下文中问这个

@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
@PrimaryEntity
public class DefaultOrganization {
***
}

@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
public class Organization {
***
}

由于 DefaultOrganization 被标记为@PrimaryEntity,DefaultOrganization 应该被@EntityScan 选择,而 Organization 应该被拒绝。

注意: @PrimaryEntity 是非JPA 标准的自定义注解,可以被spring-boot @EntityScan 处理

最佳答案

一个项目的两个不同实体不可能有重名,即使这些实体位于两个不同的包中也是如此。

Reference 1

实体类名称

默认情况下,实体名称是实体类的非限定名称(即不包括包名的短类名)。可以使用实体注释的名称属性显式设置不同的实体名称:

@Entity(name="MyName")
public class MyEntity {

}

实体名称必须是唯一的。当不同包中的两个实体类共享相同的类名称时,需要显式设置实体名称以避免冲突。

关于spring - 当存在两个或多个具有相同名称的实体时选择默认实体 - Spring Boot、Spring Data JPA、,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30590324/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com