est-il possible de créer une table qui n'a pas d'identifiant? Par exemple, c'est mon domaine: Lorsque j'exécute cette instruction SQL, elle échoue: p> 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. P> P>
5 Réponses :
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". p>
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
Vous devez probablement spécifier que NID est votre colonne ID.
static mapping = { version false id generator: 'identity', column: 'nid' }
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.
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' } }
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é. p>
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' } }