У меня есть следующий метод запроса данных 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? Или я что-то не так делаю?