OK, the part about the jdbc task clears a lot up.  This task does
the best it can using the standard meta info supplied by the 
JDBC drivers.  Since this is a standard across all the various
DB server types, there are some limitations when it comes to various
"pseudo" standards that Torque supports, like native autoincrement 
fields (and offset and limit to name some others).

Native autoincrement is actually not an SQL standard.  However, since 
most DB servers have a method of autoincrementing fields built in and 
auto-incrementing index fields is commonly used in existing schemas, 
Torque supports this "pseudo" standard in its runtime and SQL creation.
But since this is implemented and reported very differently by all the
JDBC drivers (if at all), the JDBC task can't create the correct XML
given the information available.

This is what is causing your problems.  The bottom line is that the 
JDBC task output should always be considered a starting point that
will need to be refined to match the actual schema needs.

In general, for autoincrement id fields coming out of the JDBC task, 
you will need to decide which method to use with automatic id fields. 
This is done via the defaultIdMethod attribute on the database tag  or 
the idMethod attribute on the specific table tag.  The choices are 
idbroker (Torque's works everywhere method), native (the DB server's 
native method) or none.  In your case, you want native.

Next you will need to identify the autoincrement fields and modify
them to include the autoincrement="true" attribute and drop any
default values.

FWIW, some other "gotchas" from the JDBC task that come to mind are:

If you care about creating the tables via Torque, this does not 
create any Index or Unique information (JDBC doesn't supply this).  
You will have to add these in manually.

The table ordering may not meet the requirement that foreign keys
be defined prior to their use.  So you may need to move some 
table definitions around to make sure the tables with keys come
first.

It sounds like a lot of work, but in general, it takes only a
few minutes (or can be automated for your specific DB standard).
Just remember that this is a small amount of time compared to what 
it would take to write all the code that gets generated.




> -----Original Message-----
> From: Ivano Luberti [mailto:lube...@archicoop.it]
> Sent: Monday, January 26, 2009 10:15 AM
> To: Apache Torque Users List
> Subject: Re: newbie question about postgres: nextval
> 
> Here it is .
> In my prev message I didn't said that , I have defined the db using the
> server , then I have generated the schema using the jdbc ant task and the
> classes using the om ant task.
> I don't want to define myself the shema file because I'm more famliar
> with SQL and then I don't want to make Torque create or modify my DDL.
> Finally I use Torque 3.3 version and the generator directly without using
> Maven.
> 
> 
> 
> Thomas Fischer ha scritto:
> >> I'm using postgres to generate torque classes but the automatic
> >> generation seems to make a few mistakes.
> >> In the base class I found this java statement
> >>
> >> private int pkAnagrafica =
> >> nextval('anagrafica_pk_anagrafica_seq'::regclass);
> >>
> >> which is marked as wrong by the compiler.
> >>
> >> The same happens in the copyobject method of the same class:
> >>
> >> copyObj.setPkAnagrafica(
> >>
> > nextval('anagrafica_pk_anagrafica_seq'::regclass));
> >
> >> Is there a way to stop Torque generating these bad statements ?
> >>
> >
> > Can you send the schema definition which you use for the table in
> > question ? This would ease diagnostics. I suspect that you use a
> > default value for the id; this is not necessary.
> >
> >    Thomas
> >
> 
> --
> ==================================================
> Archimede Informatica NEWS!
> ==================================================
> 
> Realizzato il Sistema Integrato per la biglietteria della Torre di Pisa:
> prenotazione, vendita, pre-vendita ed emissione dei biglietti di ingresso
> alla Torre sia online che presso le biglietterie dislocate sulla piazza:
> 
> _http://www.opapisa.it/boxoffice
> 
> _Partner del Progetto Ci-Tel "Front office Telematico per il cittadino"
> Ente Coordinatore Comune di Pisa
> 
> _http://www.comune.pisa.it/doc/e-government.htm
> 
> 
> _==================================================
> dott. Ivano Mario Luberti
> Archimede Informatica societa' cooperativa a r. l.
> Sede Operativa
> Via Gereschi 36 - 56126- Pisa
> tel.: +39-050- 580959
> tel/fax: +39-050-9711344
> e-mail: archim...@archicoop.it
> web: _http://www.archicoop.it
> 
> 
> _ <http://www.archicoop.it/>__ <http://www.archicoop.it/>
DukeCE Privacy Statement:
Please be advised that this e-mail and any files transmitted with
it are confidential communication or may otherwise be privileged or
confidential and are intended solely for the individual or entity
to whom they are addressed. If you are not the intended recipient
you may not rely on the contents of this email or any attachments,
and we ask that you please not read, copy or retransmit this
communication, but reply to the sender and destroy the email, its
contents, and all copies thereof immediately. Any unauthorized
dissemination, distribution or copying of this communication is
strictly prohibited.

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-user-unsubscr...@db.apache.org
For additional commands, e-mail: torque-user-h...@db.apache.org

Reply via email to