Sad*_*ath 1 spring hibernate jpa spring-data-jpa spring-boot
我正在使用spring数据jpa来实现持久性.如果存在多个具有相同名称的实体,是否有一种方法可以将一个实体标记为默认值.类似@Primary注释的东西用于解决多个bean依赖问题
@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
public class DefaultOrganization {
***
}
@Entity(name = "ORGANIZATION")
@Table(name = "ORGANIZATION")
public class Organization {
***
}
Run Code Online (Sandbox Code Playgroud)
更新
让我说清楚一点.我正在使用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 {
***
}
Run Code Online (Sandbox Code Playgroud)
由于DefaultOrganization标有@PrimaryEntity,因此应该通过@EntityScan选择DefaultOrganization,而应拒绝组织.
注意: @PrimaryEntity是非JPA标准自定义注释,可由spring-boot @EntityScan处理
即使实体驻留在两个不同的包中,也不可能为一个项目的两个不同实体具有重复的名称.
实体类名称
默认情况下,实体名称是实体类的非限定名称(即不包括包名称的短类名称).可以使用Entity批注的name属性显式设置不同的实体名称:
@Entity(name="MyName")
public class MyEntity {
}
Run Code Online (Sandbox Code Playgroud)
实体名称必须是唯一的.当不同包中的两个实体类共享相同的类名时,需要显式实体名称设置以避免冲突.
归档时间: |
|
查看次数: |
2019 次 |
最近记录: |