8
votes

Est-il possible pour un domaine GRAVES de n'avoir aucun "identifiant"?

est-il possible de créer une table qui n'a pas d'identifiant? Par exemple, c'est mon domaine: xxx

Lorsque j'exécute cette instruction SQL, elle échoue: xxx

J'ai vérifié la table et " ID 'est déjà défini sur AutoIncrement. Je pense qu'une autre option est de supprimer l'ID ". Ou y a-t-il une autre solution de contournement pour cela? Veuillez supposer que ce n'est pas une option de modifier l'instruction SQL de Givent.


0 commentaires

5 Réponses :


1
votes

Essayez d'utiliser: "ID (générateur:" attribué ")" au lieu de "Générateur d'identité:" Identity "" et voyez si cela supprime la propriété Autooincretime de la colonne "ID".


2 commentaires

Merci pour la réponse. Il suffit de tester votre suggestion maintenant et malheureusement, l'ID 'est toujours là.


BTW, il a supprimé la propriété Autooincrerement de 'ID'. Mais ce dont j'ai besoin, c'est de supprimer totalement la colonne "ID" et d'avoir 3 colonnes uniquement: nid, terme, poids



4
votes

Vous devez probablement spécifier que NID est votre colonne ID.

static mapping = {
    version false
    id generator: 'identity', column: 'nid'
}


2 commentaires

On dirait que cela pourrait être une autre approche. Je pourrais peut-être jouer avec la propriété "générateur". Veuillez noter que l'objectif principal est de faire fonctionner cette instruction W / O toute modification: insérer dans les valeurs SNBR_ACT_Vector (5, 'terme', 0.5)


Si c'est vraiment votre objectif, vous devrez peut-être effectuer une configuration supplémentaire dans votre DB. Peut-être un déclencheur pour traduire la déclaration à la définition de la table? Sinon, je pense que la réponse de Luke est proche du plus que vous puissiez faire de Grails / Gorm.



7
votes

Gorm requiert un champ d'identification pour fonctionner. Vous pouvez simuler un identifiant attribué à l'aide d'une variable transitoire comme ci-dessous. Les getters and Setters mappent le champ NID dans le champ ID.

Lors de la sauvegarde d'un objet de domaine à l'aide de cette méthode, vous devez faire: P>

class SnbrActVector {
    Integer id
    // nid is the actual primary key
    static transients = ['nid']
    void setNid(Integer nid) {
        id = nid
    }
    Integer getNid() {
        return nid
    }

    static mapping = {
        version false
        id generator:'assigned', column:'nid', type:'integer'
    }
}


0 commentaires

2
votes

Il n'y a aucun moyen de n'avoir aucun "identifiant". Ce que vous pouvez faire est de modifier le nom du champ "ID" à l'aide du générateur d'identifiant attribué.


0 commentaires

1
votes

Oui dans Oracle, vous pouvez utiliser la colonne ID Rowid pour ID.

class Document {
    String id

    static mapping = {
        table "DOCUMENTS"
        version false
        id column: 'ROWID'
    }

}


0 commentaires