有什么办法可以根据表名设置类的String属性吗?

时间:2019-06-04 11:09:38

标签: java spring-data-jpa

我的数据库中有两个表,处于“零售”模式,具有缩进列集:

“蔬菜组”:

+------------------+--------------------+
| (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从两个表中获取数据。

0 个答案:

没有答案