Запрос хранилища данных Spring и UUID - PullRequest
0 голосов
/ 12 марта 2019

У меня есть следующий метод запроса данных Spring:

@Query("select a from Account a where a.id = ?#{principal.accountId}")
Optional<Account> findAuthenticatedAccount();

, где principal.accountId имеет тип UUID, а учетная запись определяется следующим образом:

@Entity
public class Account {

    @Id
    @GeneratedValue
    @Column(columnDefinition = "BINARY(16)")
    private UUID id;

    ....
}

Когда я вызываю метод репозитория, я вижу следующий SQL в журналах:

org.hibernate.SQL                        : select account0_.id as id1_0_ from accounts account0_ where account0_.id=?
o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [BINARY] - [d6618f39-94b3-42f7-94aa-c1493d07d281]

Как видите, строковое представление principal.accountId представляется как BINARY, что, очевидно, неверно. Он должен создать BINARY из getLeastSignificantBits() и getMostSignificantBits().

Это ограничение Spring Data или Hibernate? Или я что-то не так делаю?

...