Есть ли способ установить свойство String класса в зависимости от имени таблицы? - PullRequest
2 голосов
/ 04 июня 2019

У меня есть две таблицы в моей базе данных, в схеме "розничная торговля", с наборами отступов столбцов:

"vegetable_group":

+------------------+--------------------+
| (varchar) id     | (varchar) value    |
+------------------+--------------------+
| 1                | good_vegetables    |
| 2                | bad_vegetables     |
+------------------+--------------------+

"fruit_group":

+------------------+--------------------+
| (varchar) id     | (varchar) value    |
+------------------+--------------------+
| 3                | good_fruit         |
| 4                | bad_fruit          |
+------------------+--------------------+

также у меня есть enum в типе базы данных product_type как enum ('fruit', 'vegetable');

это моя сущность:

@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 в зависимости от таблицы, от объединенных данных ...

Можно ли как-нибудь просто сделать это?

Upd.

Я использую @SecondaryTable, потому что мне нужно получать данные из двух таблиц, используя одну сущность.Например, у меня есть Продукт с идентификатором 99. Я не знаю, овощ это или фрукт.Общий подход к такому процессу заключается в создании двух объектов: фруктов и овощей и их поиске по идентификаторам.Но структуру базы данных нельзя изменить, поэтому я использую один объект Product, который получает данные из обеих таблиц по уникальному идентификатору.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...