Как позволить Hibernate не переопределить указанный UUID? - PullRequest
1 голос
/ 06 декабря 2011

Я определил сущность с первичным ключом uuid:

@Entity
@Table(name = "SITES")
public class Site extends Model {

    @Id
    @Column(length = 32)
    @GeneratedValue(generator = "system-uuid")
    @GenericGenerator(name = "system-uuid", strategy = "uuid")
    private String id;
}

Это работает нормально, но я обнаружил, что hibernate всегда переопределит указанный идентификатор:

Когда я сохраню Siteобъект с указанным uuid 402881e533fe2de70133fe2df6790000, например:

Site site = new Site();
site.setId("402881e533fe2de70133fe2df6790000");
siteDao.save(site);

Распечатать идентификатор:

System.out.println(site.id);

Получить:

402881e534110dc30134110dd4e80000

Есть ли способ задать спящий режимне отменять мой указанный uuid?

Ответы [ 2 ]

0 голосов
/ 12 января 2016

Посмотрите на этот пост: http://rajivrnair.github.io/custom-hibernate-uuid/

Конкретно, вы можете создать собственный генератор UUID, который пропускает генерацию, если UUID уже был установлен для целевого поля.Это полезно, особенно при тестировании вашего кода.

0 голосов
/ 06 декабря 2011

Почему вы хотите использовать setId ().Вы должны позволить Hibernate обрабатывать идентификаторы, и все правильно.

Hibernate устанавливает идентификатор, если вы сохраняете новый объект.

...