Заголовок, как показано ниже. Проблема в том, что когда я вызываю EDIRepoName.findById (shortName), я получаю сообщение об ошибке, подразумевающее использование неправильного репо. (Я гарантирую, что короткое имя уникально, но мне нужно его искать.)
среда, 27 мая, 09:43:49 EDT 2020 Произошла непредвиденная ошибка (тип = Внутренняя ошибка сервера, статус = 500). Указан идентификатор неправильного типа для класса com.example.ta_edi.model.EDIType. Ожидается: класс java .lang.Long, получен класс java .lang.String; вложенное исключение
public class EDITypeService {
@Autowired
EDITypeRepository ediRepo;
@Autowired
EDITypeNameRepository ediRepoName;
public interface EDITypeRepository extends CrudRepository<EDIType,Long> {
}
public interface EDITypeNameRepository extends CrudRepository<EDIType,String> {
}
public Optional<EDIType> getByShort(EDIType ediType) {
//dangerous.assume shortName is unique.
String shortName = ediType.getShortName();
Optional<EDIType> found = ediRepoName.findById(shortName);
return found;
}
Обновлено: Могу ли я не иметь репозиторий, который выполняет поиск по непервичному ключу? Если так, это объяснило бы ошибку. Тогда как мне выполнить поиск по другому ключу, кроме первичного?
@Entity
public class EDIType {
@Id
@GeneratedValue
Long index;
@CreationTimestamp
LocalDateTime created;
@UpdateTimestamp
LocalDateTime updated;
String shortName;
String processType;
@Lob
Clob xmlFile;
Спасибо, но я сначала выполнил эту модификацию ниже, а второй получил ошибку
public interface EDITypeNameRepository extends CrudRepository<EDIType,String> {
@Query("SELECT p FROM EDIType WHERE LOWER(p.shortName)=LOWER(:shortName)")
public List<EDIType> byShortName(@Param("shortName") String shortName);
}
Ошибка создание bean-компонента с именем 'EDITypeNameRepository': FactoryBean выдал исключение при создании объекта; вложенное исключение: java .lang.IllegalArgumentException: ошибка проверки для запроса для метода publi c abstract java .util.List com.example.ta_edi.repository.EDITypeNameRepository.byShortName (java .lang.String)!