我的数据库中有两个表,处于“零售”模式,具有缩进列集:
“蔬菜组”:
+------------------+--------------------+
| (varchar) id | (varchar) value |
+------------------+--------------------+
| 1 | good_vegetables |
| 2 | bad_vegetables |
+------------------+--------------------+
“ fruit_group”:
+------------------+--------------------+
| (varchar) id | (varchar) value |
+------------------+--------------------+
| 3 | good_fruit |
| 4 | bad_fruit |
+------------------+--------------------+
我也有一个数据库类型为product_type的枚举作为枚举(“水果”,“蔬菜”);
这是我的实体:
@Data
@Entity
@Table(schema = "retail", name = "vegetable_group")
@SecondaryTables({
@SecondaryTable(schema = "retail", name = "fruit_group",
pkJoinColumns = @PrimaryKeyJoinColumn(name = "id", referencedColumnName = "id")
)
})
public class Product implements Serializable {
private enum ProductType {
vegetable, fruit
}
@Id
@Column(name = "id")
private String id;
@Enumerated(EnumType.STRING)
ProductType productType;
@Column(name = "value")
private String value;
}
和简单的ProductRepository
public interface ProductRepository extends JpaRepository<Product, String> {
}
我需要根据表格从组合数据中以某种方式设置product.productType的值...
我能以某种方式简单地做到这一点吗?
更新。
我正在使用@SecondaryTable,因为我需要使用单个实体从两个表中获取数据。例如,我有一个ID为99的产品。我不知道它是蔬菜还是水果。此过程的常用方法是创建两个实体:“水果”和“蔬菜”,并按ID进行搜索。但是数据库结构无法更改,因此我使用一个实体产品,该产品通过唯一ID从两个表中获取数据。