我可以拥有一个仅映射到 table 的某些列的实体吗?
Can I have an entity that only maps to some columns of a table?
我正在制作一个数据库迁移工具,并且正在处理一个非常笨重的源数据库。它基本上是一个巨大的 table,有超过 40-50 列。然而,并非所有这些专栏都对我有用。我只想要一打左右。获得该数据后,我将向 Web 服务发出请求,该服务将处理迁移目标端的所有内容。
我的选择基本上是手动创建查询以仅 select 我想要的列,或者创建一个映射我想要的列的实体。我不太熟悉使用 JPA,所以我不确定这是否可行或是否可行。
我可以做类似
的事情吗
@Entity
class SomeEntity{
@Column(name = "ColumnA")
private String columnA;
@Column(name = "ColumnB")
private String columnB;
}
如果数据库中的列是,例如
Column A | Column B | Column C | Column D
EclipseLink 会只映射我注释的列,还是会抱怨试图将数据库中的列映射到我的实体中不存在的字段?我知道@Transient 会标记不应保留的字段。但我想做相反的事情,忽略数据库列,只将 table 部分映射到 class.
您应该创建一个视图。让视图包含您认为相关的尽可能多的列。将这些列定义为 class 中的字段,并像往常一样使用 hibernate 注释连接它们。但请注意,您只能在视图上执行选择,因此插入/更新/删除是不可能的。
我正在制作一个数据库迁移工具,并且正在处理一个非常笨重的源数据库。它基本上是一个巨大的 table,有超过 40-50 列。然而,并非所有这些专栏都对我有用。我只想要一打左右。获得该数据后,我将向 Web 服务发出请求,该服务将处理迁移目标端的所有内容。
我的选择基本上是手动创建查询以仅 select 我想要的列,或者创建一个映射我想要的列的实体。我不太熟悉使用 JPA,所以我不确定这是否可行或是否可行。
我可以做类似
的事情吗@Entity
class SomeEntity{
@Column(name = "ColumnA")
private String columnA;
@Column(name = "ColumnB")
private String columnB;
}
如果数据库中的列是,例如
Column A | Column B | Column C | Column D
EclipseLink 会只映射我注释的列,还是会抱怨试图将数据库中的列映射到我的实体中不存在的字段?我知道@Transient 会标记不应保留的字段。但我想做相反的事情,忽略数据库列,只将 table 部分映射到 class.
您应该创建一个视图。让视图包含您认为相关的尽可能多的列。将这些列定义为 class 中的字段,并像往常一样使用 hibernate 注释连接它们。但请注意,您只能在视图上执行选择,因此插入/更新/删除是不可能的。