У меня есть несколько сущностей, совместно использующих одну и ту же таблицу базы данных с @DiscriminatorValue
с одним базовым классом:
@Entity(name = "base_details")
@DiscriminatorColumn(name = "type")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@Getter
@Setter
public abstract class BaseDetails {
@Id
@Column(name = "identifier")
private String identifier;
@Column(name = "item_type")
@Enumerated(EnumType.STRING)
private Type type;
}
@Entity
@DiscriminatorValue("ONE")
@Getter
@Setter
public class FirstDetails extends BaseDetails {
...
}
@Entity
@DiscriminatorValue("TWO")
@Getter
@Setter
public class SecondDetails extends BaseDetails {
...
}
Это работает нормально, но я сталкиваюсь с проблемой слишком большого количества отдельных репозиториев:
@Repository
public interface OneDetailsRepository extends JpaRepository<OneDetails, String> { ... }
и т. Д.
Есть ли способ, как иметь один репозиторий (например, BaseDetailsRepository
), который будет работать со всеми производными сущностями?
РЕДАКТИРОВАТЬ: Кто яищу что-то вроде этого:
@Repository
public interface BaseDetailsRepository extends JpaRepository<? extends BaseDetails, String> {
OneDetails findOne(String identifier);
SecondDetails findOne(String identifier);
}