Configurer Hibernate pour utiliser Oracle SYS_GUID() pour la Clé Primaire

Je suis à la recherche d'un moyen d'obtenir d'hibernation pour l'utilisation d'oracle SYS_GUID() fonction lors de l'insertion de nouvelles lignes. Actuellement ma DB tables ont SYS_GUID() que la valeur par défaut donc si hibernate simplement SQL généré qui omis, la valeur, il devrait fonctionner.

J'ai tout qui fonctionne, mais il est actuellement en générant l'UUID/GUID dans le code en utilisant le système générateur d'uuid:

@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
@Column(name = "PRODUCT_ID", unique = true, nullable = false)
public String getId() {
    return this.productId;
}

C'est très bien, mais je préférerais que les guid ont été générés par la base de données de sorte qu'ils seront séquentielle et potentiellement de meilleures performances. De Plus, je voudrais juste savoir comment configurer ce.

Je suis à l'aide d'annotations pour la configuration, mais de configuration xml exemples sont impressionnantes.

Voici un exemple de définition de la table (dans le cas où c'est important):

CREATE TABLE SCHEMA_NAME.PRODUCT
(
    PRODUCT_ID RAW(16) DEFAULT SYS_GUID() NOT NULL,
    PRODUCT_CODE VARCHAR2(10 CHAR) NOT NULL,
    PRODUCT_NAME VARCHAR2(30 CHAR) NOT NULL,
    PRODUCT_DESC VARCHAR2(512 CHAR)
)

Mise à JOUR:

Mat de la solution de l'aide "guid" a travaillé, voici le code sql généré:

Hibernate: 
    select rawtohex(sys_guid()) 
    from dual
Hibernate: 
    insert into PRODUCT
    (PRODUCT_CODE, PRODUCT_DESC, LOB_ID, PRODUCT_NAME, PROVIDER_ID, PRODUCT_ID) 
    values (?, ?, ?, ?, ?, ?)

Il semble que l'utilisation de colonnes par défaut de la valeur dans un insert n'est pas possible, de sorte que le choix est entre une application générée guid et une base de données de l'aller-retour.

OriginalL'auteur Ryan Cook | 2009-05-11