Исключение при использовании @Query для поиска UUID, полученного из абстрактного класса - PullRequest
0 голосов
/ 02 октября 2018

У меня есть абстрактный класс:

@Column(name = "uuid", nullable = false, unique = true, updatable = false, length = 36)
    private String uuid;

    public UUID getUuid() {
            if (uuid == null) {
                return null;
            }
        return UUID.fromString(uuid);
    }

    public void setUuid(UUID uuid) {
        this.uuid = uuid.toString();
    }

, а затем сущность:

@Entity
@Table(name = "creatinine")
public class Creatinine extends AbstractEntity {

и хранилище

public interface CreatinineRepository extends JpaRepository<Creatinine, Long> {
    @Query("SELECT m FROM Creatinine m WHERE m.uuid = :uuid")
    public Creatinine find(String uuid);
}

Однако приложение выдает«Вы пытались установить параметр, который не существует в этой строке запроса» исключение.

Я передал uuid в запросе как строку, так и UUID с одинаковым исключением в обоих случаях.Я что-то упускаю здесь?

1 Ответ

0 голосов
/ 02 октября 2018

Я думаю, что при использовании именованных параметров необходимо добавить @Param

public interface CreatinineRepository extends JpaRepository<Creatinine, Long> {
    @Query("SELECT m FROM Creatinine m WHERE m.uuid = :uuid")
    public Creatinine find(@Param("uuid") String uuid);
}

Если вы используете Java 8 или лучше, обязательно скомпилируйте с -parameters, чтобы избежать аннотации @Param для именованных параметров.

...