Использование Hibernate UUIDGenerator через аннотации


Я использую свой uuid следующим образом:

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "uuid", unique = true)
private String uuid;

но я получаю умный спящий режим предупреждение:

используя орг.гибернации.ИД.UUIDHexGenerator который не генерирует IETF RFC 4122 совместимые значения UUID; рассмотрите возможность использования org.hibernate.id. UUIDGenerator вместо

поэтому я хочу переключиться на org.hibernate.id.UUIDGenerator, теперь мой вопрос в том, как я должен сказать это генератору Hibernate. Я видел, что какой-то парень использовал его как "hibernate-uuid" - так вот что у меня есть пробовал, но с отрицательным результатом:

@Id
@GeneratedValue(generator = "hibernate-uuid")
@GenericGenerator(name = "hibernate-uuid", strategy = "hibernate-uuid")
@Column(name = "uuid", unique = true)
private String uuid;
6 58

6 ответов:

Он должен быть!--1-->:

...
@GenericGenerator(name = "uuid", strategy = "uuid2")
...

посмотреть 5.1.2.2.1. Различные дополнительные генераторы.

HibernateDoc говорит, что вы можете использовать следующее:

@Id
@GeneratedValue(generator="system-uuid")
@GenericGenerator(name="system-uuid", strategy = "uuid")
@Column(name = "uuid", unique = true)
private String uuid;

Я надеюсь, что вы используете Hibernate 3.5.

попробовать...

@Id
@GeneratedValue(generator = "uuid2")
@GenericGenerator(name = "uuid2", strategy = "uuid2")
@Column(name = "uuid", columnDefinition = "BINARY(16)")
public UUID getId()
{
    return id;
}

public void setId(UUID i)
{
    id = i;
}

обратите внимание на "uuid2 "в отличие от"uuid".

Неизвестный Идентификатор.генератор: hibernate-uuid

@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "org.hibernate.id.UUIDGenerator")
@Column(name = "id", unique = true)
public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}
@Id
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid")
@Column(name = "UUID_ID")
public String getId(){
return id;
}

это правильный способ использовать аннотации для генераторов uuid в Hibernate 5.0.11.ОКОНЧАТЕЛЬНЫЙ.

Примечание: он устарел.

как @natan указал в комментарии, если вы используете Hibernate 5 ниже код достаточно:

@Id 
@GeneratedValue
private java.util.UUID id;

определение