Я пытаюсь использовать UUID в качестве идентификаторов для своей базы данных, но у меня просто не получается, чтобы он работал.
Первая попытка была:
@Id
@GeneratedValue(generator = "hibernate-uuid")
@GenericGenerator(name = "uuid", strategy = "uuid4")
private UUID id;
, но это генерирует уродливый байтовый код. Итак, я добавил аннотацию типа:
@Id
@GeneratedValue(generator = "hibernate-uuid")
@GenericGenerator(name = "uuid", strategy = "uuid4")
@Type(type="org.hibernate.type.UUIDCharType")
private UUID id;
с этим я получаю символьное представление в моей mysql базе данных, но запрашивая базу данных с использованием моего репозитория:
public interface CommentsRepository extends CrudRepository<Comment, UUID> {
Comment findById(final UUID imageId);
}
не нашел никакого результата - даже если запись с данным UUID существует, она не вернет результат. Даже если я использую простой SQL непосредственно в своей базе данных, он не найдет никакого результата.
Есть ли что-то еще, что мне нужно сделать, чтобы заставить UUID работать?
EDIT
Попробуйте это:
@Data
@Entity
public class Comment implements Serializable {
@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Type(type = "uuid-char")
private UUID id;
}
и добавьте некоторые значения по умолчанию:
@Component
@Slf4j
public class CommentsSampleData implements CommandLineRunner {
private final CommentsRepository repository;
@Autowired
public CommentsSampleData(final CommentsRepository repository) {
this.repository = repository;
}
@Override
public void run(String... args) {
repository.save(new Comment());
repository.save(new Comment());
repository.save(new Comment());
repository.save(new Comment());
}
}
Результаты в следующей таблице:
![enter image description here](https://i.stack.imgur.com/yoroL.png)
performing:
SELECT * FROM comment WHERE id = 'b076a9f7-7e9e-4f5a-91f8-e66c7d076fac'
results in:
введите описание изображения здесь
что означает отсутствие результата, но он должен быть. Использование jpa также ничего не возвращает.