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'
}
}