Mudar ID do BD
09/01/2013 02:13
0
Olá pessoal queria que a ID do meu BD fosse a placa de um automóvel, não queria que fosse os valores incrementais.

Alguém já tentou algo parecido?

Valeu!
Tags: BD,ID


1
Fala Brother!

Vc pode mapear o seu id no seu Dominio

Ex:

class Veiculo {
String modelo
String fabricante
String placa

static mapping = {
id column: 'placa'
...
}
...
}

Tem a documentação com mais detalhes! LINK

Abraço!


0
Deu esse erro aqui.
Repeated column in mapping for entity: taxiws.Taxi column: placa (should be mapped with insert="false" update="false")
09/01/2013 22:10


0
Minha classe tem uma relação One To One tbm.

Dei uma olhada na tabela taxi e a PK está lá como placa :) , mas na segunda tabela a FK é taxi_id ainda
10/01/2013 00:49


0
Rapaz, possuo a classe Taxi e outra classe Localização

E há a relação OneToOne entre elas.
Consegui mudar a chame primária de Taxi para que seja a placa, mas na tabela de Localização
deveria possuir uma chave FK quer referenciaria Taxi, porém ainda fica taxi_id e não taxi_placa.

Tentei mudar no mapeamento de Localização o nome da coluna e consegui, mas ainda da erro, O famoso No value specified for parameter 1

Ta complicado, olhei na documentação e fala sobre o generator:foreign Mas não consigo usar tbm.

Quem souber, valeuuu!!!
10/01/2013 13:50


0
Como estão minhas tabelas :/

11/01/2013 02:50


1
Gleydson,

quando você fica mudando muito a estrutura de suas classes de dominio, acaba sendo melhor excluir ("dropar") as tabelas para o Grails criá-las novamente "do zero".

Em todo caso, o que você quer deve ser feito assim:
class Veiculo {
...
static mapping = {
id(column:"placa", generator: 'assigned', type: 'string')
}
...
}


E NÃO DEVE haver o campo placa como um campo comum ("String placa", não).

Na tabela Localizacao ou qualquer outra que tenha ligação com Veiculo, o campo não será placa e sim veiculo_id mesmo, mas do mesmo tipo de placa, entendeu?


1

Gleydson,

O josé está correto, na hora que criei o exemplo não me atentei a isso! Valeu pela correção! Só achei esquisito a caixa alta! mas tah valendo!

Abraço!


0
Valeu pessoal era isso mesmo, mas continua dando o erro. Dei uma pesquisada na internet e esse erro é bastante comum quando há um relacionamento.

| Error 2013-01-11 18:17:01,569 [http-bio-8080-exec-6] ERROR util.JDBCExceptionReporter  - No value specified for parameter 1
| Error 2013-01-11 18:17:01,576 [http-bio-8080-exec-6] ERROR errors.GrailsExceptionResolver - SQLException occurred when processing request: [POST] /Veiculows/veiculo/create
No value specified for parameter 1. Stacktrace follows:
Message: No value specified for parameter 1


def locationInstance = new Location(latitude:7000,longitude:50000)
def veiculo = new Veiculo(placa:"MMO7656",motorista:"Gleydson",location:locationInstance)
11/01/2013 21:25


1
Amigo, qual linha precisamente o stacktrace diz qye que dispara a exceção?


0
O problema parece ser na associação mesmo. Vou dar uma olhada aqui na API e ver se consigo.

class Veiculo {	
String placa
String motorista
static hasOne = [location:Location]

static constraints = {
placa(nullable:false,blank:false)
motorista(nullable:false,blank:false)
location(nullable:false,blank:false)
}

static mapping = {
version false
id generator:'assigned', name:'placa', type:'string'
}
}


class Location {

double latitude
double longitude
Veiculo veiculo


static constraints = {
latitude(nullable:false,blank:false)
longitude(nullable:false,blank:false)
}

static mapping = {
version false
}
}
11/01/2013 21:33


0
Line | Method
->> 1073 | createSQLException in com.mysql.jdbc.SQLError
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| 987 | createSQLException in ''
| 982 | createSQLException . in ''
| 927 | createSQLException in ''
| 2595 | checkAllParametersSet in com.mysql.jdbc.PreparedStatement
| 2571 | fillSendPacket in ''
| 2497 | fillSendPacket . . . in ''
| 2251 | executeQuery in ''
| 96 | executeQuery . . . . in org.apache.commons.dbcp.DelegatingPreparedStatement
| 46 | onApplicationEvent in org.grails.datastore.mapping.engine.event.AbstractPersistenceEventListener
| 26 | doCall . . . . . . . in taxiws.TaxiController$_closure1$$ENuFZj7g
| 195 | doFilter in grails.plugin.cache.web.filter.PageFragmentCachingFilter
| 63 | doFilter . . . . . . in grails.plugin.cache.web.filter.AbstractFilter
| 886 | runTask in java.util.concurrent.ThreadPoolExecutor$Worker
| 908 | run . . . . . . . . . in ''
^ 662 | run in java.lang.Thread
11/01/2013 21:34


1
Amigo, tire o campo placa da classe Veiculo.
Tire também a referência a ela dentro de "constraints".

Veja se resolve.


0
Olá Yoshiriro,
Removi o campo Placa e deu esse erro.
Error creating bean with name 'sessionFactory': Invocation of init method failed; nested exception is org.codehaus.groovy.grails.exceptions.InvalidPropertyException: No property found for name [placa] for class [class veiculows.Veiculo] e da Constraints tbm.

Depois deixei apenas a placa sem a Constraints, mas deu o mesmo erro de No value specified for parameter 1 novamente
12/01/2013 02:39


0
Consegui :)

Era só remover location dos constraints de Veículo. Não sei o pq ainda, mas vou verificar depois.

Valeu ai galera pela ajuda. O/
12/01/2013 03:44



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