You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by "Thomas Fox (JIRA)" <ji...@apache.org> on 2011/07/03 21:47:21 UTC

[jira] [Closed] (TORQUE-142) MYSQL - default timestamp set to current_timestamp generates classes incorrectly

     [ https://issues.apache.org/jira/browse/TORQUE-142?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Thomas Fox closed TORQUE-142.
-----------------------------

    Resolution: Not A Problem
      Assignee: Thomas Fox

This is not intended to be working. Current_timestamp is a mysql specific value and will not work on other databases.
The problem can be solved on the java side by overwriting the save() method on your objects in java and setting the timestamp in java before saving the object. In this solution, it is a good idea to check if the object was modified (isModified()) before setting the timestam otherwise the object will be saved even if it was not modified.

> MYSQL - default timestamp set to current_timestamp generates classes incorrectly
> --------------------------------------------------------------------------------
>
>                 Key: TORQUE-142
>                 URL: https://issues.apache.org/jira/browse/TORQUE-142
>             Project: Torque
>          Issue Type: Bug
>          Components: Generator
>    Affects Versions: 3.3
>         Environment: Windows
>            Reporter: Sethuraman Ramasubramanian
>            Assignee: Thomas Fox
>
> Recently I changed all the tables in my database to include an updated_ts column.
> I have the timestamp column in mysql defined as 
> `updated_ts` TIMESTAMP NOT NULL DEFAULT now() ON UPDATE NOW(), this is the same as 
> `updated_ts` TIMESTAMP NOT NULL DEFAULT current_timestamp ON UPDATE current_timestamp
> When I generate the XML from the DB, I get the below generated. Please look at the last column.
> <table name="address">
>         <column name="address_id" primaryKey="true" required="true"
>             size="20" type="VARCHAR"/>
>         <column name="address_ln_1" required="true" size="150" type="VARCHAR"/>
>         <column name="address_ln_2" size="150" type="VARCHAR"/>
>         <column name="city" required="true" size="100" type="VARCHAR"/>
>         <column name="state" required="true" size="2" type="CHAR"/>
>         <column name="pincode" required="true" size="8" type="CHAR"/>
>         <column name="email_id" size="100" type="VARCHAR"/>
>         <column default="India" name="country" required="true" size="45" type="VARCHAR"/>
>         <column default="CURRENT_TIMESTAMP" name="updated_ts"
>             required="true" type="TIMESTAMP"/>
>     </table>
> Now when I generate the OM classes I get the Address object generated with the below line:
>  private Date updatedTs = new Date(CURRENT_TIMESTAMP);
> This results in a compilation error. 
> My questions are:
> 1. Are default timestamp values supported in Torque?
> 2. How about the "on update" clause? If a column has an on update clause, will Torque ignore it and just send an update statement with the column to the database. This would result in some issues, for example if I selected a row from the table and changed some values. I then call save(), then the updated timestamp will not get updated because it already has a value in it. Is there anyway I can change Torque in a common place to set the value to be null, if the column name is updated_ts. This would solve this problem.
> Any help is highly appreciated.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org