Não usar ID automatico
10/09/2008 00:00
0
Bom Dia,

Estou iniciando no Grails e quero utilizá-lo com uma base de dados Oracle já existente mas estou enfrentando problemas
para contornar a referencia a coluna ID feita automaticamente, já que não posso alterar essas tabelas.
Já procurei no Forum e no Google mas ainda não consegui resolver a situação.
Criei uma tabela para efetuar os testes, onde a Primary key é um numero que não pode ser sequencial mas informado pelo usuário.
Na classe de dominio estou informando que a coluna id é referenciada por iden, mas mesmo assim quando gero as views, a coluna ID tem referencias no código.
Além disso, quando rodo a aplicação o seguinte erro é gerado: org.hibernate.MappingException: Repeated column in mapping for entity: Teste4 column: iden (should be mapped with insert="false" update="false")

Alguem sabe como posso referenciar a PK da tabela ao invés de usar o ID automatico?
Abaixo a estrutura da tabela, classe de dominio e a view list.

Obrigado,
Fabiano.


CREATE TABLE teste4 (
iden NUMBER(5,0) NOT NULL,
nome VARCHAR2(50) NULL,
texto VARCHAR2(50) NULL
);


ALTER TABLE teste4
ADD CONSTRAINT pk_teste3 PRIMARY KEY (
iden
);


Classe de Dominio:

class Teste4 {
int iden
String nome
String texto

static mapping = {
table 'teste4'
version false
columns {
id column:'iden'
}
}
}

list.groovy

<html>
<head>
<meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;/>
<meta name=&quot;layout&quot; content=&quot;main&quot; />
<title>Teste4 List</title>
</head>
<body>
<div class=&quot;nav&quot;>
<span class=&quot;menuButton&quot;><a class=&quot;home&quot; href=&quot;$&#123;createLinkTo(dir&#58;'')&#125;&quot;>Home</a></span>
<span class=&quot;menuButton&quot;><g&#58;link class=&quot;create&quot; action=&quot;create&quot;>New Teste4</g&#58;link></span>
</div>
<div class=&quot;body&quot;>
<h1>Teste4 List</h1>
<g&#58;if test=&quot;$&#123;flash.message&#125;&quot;>
<div class=&quot;message&quot;>$&#123;flash.message&#125;</div>
</g&#58;if>
<div class=&quot;list&quot;>
<table>
<thead>
<tr>

<g&#58;sortableColumn property=&quot;id&quot; title=&quot;Id&quot; />

<g&#58;sortableColumn property=&quot;iden&quot; title=&quot;Iden&quot; />

<g&#58;sortableColumn property=&quot;nome&quot; title=&quot;Nome&quot; />

<g&#58;sortableColumn property=&quot;texto&quot; title=&quot;Texto&quot; />

</tr>
</thead>
<tbody>
<g&#58;each in=&quot;$&#123;teste4List&#125;&quot; status=&quot;i&quot; var=&quot;teste4&quot;>
<tr class=&quot;$&#123;(i % 2) == 0 ? 'odd' &#58; 'even'&#125;&quot;>

<td><g&#58;link action=&quot;show&quot; id=&quot;$&#123;teste4.id&#125;&quot;>$&#123;fieldValue(bean&#58;teste4, field&#58;'id')&#125;</g&#58;link></td>

<td>$&#123;fieldValue(bean&#58;teste4, field&#58;'iden')&#125;</td>

<td>$&#123;fieldValue(bean&#58;teste4, field&#58;'nome')&#125;</td>

<td>$&#123;fieldValue(bean&#58;teste4, field&#58;'texto')&#125;</td>

</tr>
</g&#58;each>
</tbody>
</table>
</div>
<div class=&quot;paginateButtons&quot;>
<g&#58;paginate total=&quot;$&#123;Teste4.count()&#125;&quot; />
</div>
</div>
</body>
</html>

Tags: Grails


0
93!

Pra não usar o id automático vc acrescenta esse código na sua classe de domínio:


mapping = &#123;
...
id generator&#58; &quot;assigned&quot;
...
&#125;


Dá uma olhada em http&#58;//www.hibernate.org/hib_docs/reference/en/html/mapping.html (em 5.1.4.1. Generator) que vc vai encontrar mais infos lá!

93,93/93
11/09/2008 00:00


0
Eu tenho uma tabela de usuario, que a PK é o login do usuario, como faço para fazer a configuração no Domain ?. O banco é antigo e já está em produção e nao posso criar campos como id nem version.(lembrando que o campo login é String)


class Usuario &#123;
String loginUsuario ---> PK
String nome
String senha
....
static mapping = &#123;
id generator&#58; &quot;assigned&quot;
version false
&#125;
&#125;


Dessa forma descrita assim é gerado um campo Id no select. Existe alguma forma de nao usar o Id assim como Version ?

Herrera
07/12/2008 00:00


0
eu já tinha resolvido a um bom tempo, mas deixo aqui registrado:


class Usuario {
String id
String nome
String senha
....
static mapping = {
id generator:'assigned', column:'login_usuario', type:'string'
version false
....
}
}
27/01/2009 00:00



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto