Я реализовал собственный класс для представления векторных данных базы данных на основе класса UserType.
Мой пример:
class MyVectorType implements UserType {
@Override
public int[] sqlTypes() {
return new int[] { Types.ARRAY };
}
};
@Entity
@Table("MY_ENTITY")
public class MyEntity {
private MyVectorType myVectorType;
}
Однако этот класс нельзя использовать при тестировании на диалекте h2, т.е. в базе данных памяти. Ошибка: нет сопоставления диалектов для типа JDBC: 2003.
Поэтому я хотел бы исключить эту сущность (включая хранилище) из тестирования, но это не работает:
@SpringBootApplication
@ComponentScan(excludeFilters = {
@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, classes = {
MyEntity.class, MyEntityRepository.class})
})
public class ApiApplication {
public static void main(String[] args) {
SpringApplication.run(ApiApplication.class, args);
}
}
Что не так или есть лучшие практики для решения этой проблемы?
РЕДАКТИРОВАТЬ 1: исправлены примеры - добавлена правильная сущность и хранилище
РЕШЕНИЕ 1:
Я думаю, что единственным возможным решением на данный момент является перемещение классов сущностей (которые должны быть исключены) в другой пакет. Затем установите @EntityScan для сканирования только неисключенного пакета. Фильтры исключения в ComponentScan, кажется, работают только в случае классов @Component, а не @Entity. Однако это не совсем лучшая практика для решения этой проблемы.