cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gentry, Michael \(Contractor\)" <michael_gen...@fanniemae.com>
Subject RE: UpdateQuery not updating
Date Thu, 06 Apr 2006 14:19:51 GMT
I try to always work on objects (CayenneDataObjects) returned from a
SelectQuery.  Then when it comes time to update, I do something like:

// customer is a CayenneDataObject from a previous SelectQuery
customer.setDateOfBirth(dob);
ctxt.commitChanges();

There are some Cayenne tutorials for both JSP/Struts and Tapestry you
can look at on the web site.  I'm guessing you are using the former
since with Tapestry you don't have to go and get values out of the
request cycle.  Those might be helpful, though.

/dev/mrg


-----Original Message-----
From: Alan Baltazar [mailto:acatalanb@yahoo.com] 
Sent: Wednesday, April 05, 2006 6:57 PM
To: cayenne-user@incubator.apache.org
Subject: RE: UpdateQuery not updating


How would you implement your way for updating tables?

--- "Gentry, Michael (Contractor)" <michael_gentry@fanniemae.com> wrote:

> I've never used UpdateQuery before, but try:
> 
> UpdateQuery updated =
>   new UpdateQuery(Customer.class,
>                   template.expWithParameters(params));
> 
> Also, I don't think you need the commitChanges() at the end ...  That
> would be more useful if you were working with actual
CayenneDataObjects,
> which you aren't.  Also, I think your object graph might get
out-of-sync
> this way, which could lead to more problems.
> 
> /dev/mrg
> 
> 
> -----Original Message-----
> From: Alan Baltazar [mailto:acatalanb@yahoo.com] 
> Sent: Wednesday, April 05, 2006 5:13 PM
> To: cayenne-user@incubator.apache.org
> Subject: UpdateQuery not updating
> 
> 
> Hello,
> 
>   I'm trying to update a field in a table using the UpdateQuery. The
> following code
> doesn't update my data.
> 
> Date dob = null;
> DateFormat df = DateFormat.getDateInstance();
> DataContext ctxt =
> BasicServletConfiguration.getDefaultContext(request.getSession());
> 
> String customerName = request.getParameter("customerName");
> String dateOfBirth = request.getParameter("dateOfBirth");
>         
> Expression template = Expression.fromString("customerName =
> $customerName");
> Map params = new HashMap();
> params.put("customerName", customerName);
> 
> UpdateQuery updated = new UpdateQuery(Customer.class,template);    
>     
> try { 
>    dob = df.parse(dateOfBirth);        	
> }
> catch(ParseException e) {
>    System.out.println("Unable to parse ");
> }
>         
> updated.addUpdAttribute("DATE_OF_BIRTH",dob);
> ctxt.performNonSelectingQuery(updated);
> ctxt.commitChanges(); 	
> 
> return mapping.findForward("success");
> }
> 
> this is the mysql table,
> CREATE TABLE `CUSTOMER` (
>   `CUSTOMER_ID` int(10) unsigned NOT NULL ,
>   `CUSTOMER_NAME` varchar(20) NOT NULL default '',
>   `DATE_OF_BIRTH` date NOT NULL default '0000-00-00',
>   PRIMARY KEY  (`CUSTOMER_ID`)
> ) TYPE=InnoDB;
> 
> here's the data object,
> public class _Customer extends
org.objectstyle.cayenne.CayenneDataObject
> {
> 
>     public static final String CUSTOMER_NAME_PROPERTY =
"customerName";
>     public static final String DATE_OF_BIRTH_PROPERTY = "dateOfBirth";
>     public static final String PRODUCT_ARRAY_PROPERTY =
"productArray";
> 
>     public static final String CUSTOMER_ID_PK_COLUMN = "CUSTOMER_ID";
> 
>     public void setCustomerName(String customerName) {
>         writeProperty("customerName", customerName);
>     }
>     public String getCustomerName() {
>         return (String)readProperty("customerName");
>     }
>     
>     
>     public void setDateOfBirth(java.util.Date dateOfBirth) {
>         writeProperty("dateOfBirth", dateOfBirth);
>     }
>     public java.util.Date getDateOfBirth() {
>         return (java.util.Date)readProperty("dateOfBirth");
>     }
>     
>     
>     public void addToProductArray(dao.Product obj) {
>         addToManyTarget("productArray", obj, true);
>     }
>     public void removeFromProductArray(dao.Product obj) {
>         removeToManyTarget("productArray", obj, true);
>     }
>     public List getProductArray() {
>         return (List)readProperty("productArray");
>     }
>     
>     
> }
> 
> 
>   if there's any other shorter way to do this with UpdateQuery, I'm
> listening
> 
> thanks for any help,
> alan
> 
> __________________________________________________
> Do You Yahoo!?
> Tired of spam?  Yahoo! Mail has the best spam protection around 
> http://mail.yahoo.com 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Mime
View raw message