UnitOfWork/Cache/ClientSession Object Update Problem

I have a test case that does a create, read, update, read. This is done through methods on a stateless session bean with all methods requiring a transaction.
I am using Toplink 9.0.3,JBoss 3.0.7 and JTS. Bascally I have a very simple object.
1. I create the object then call my bean, my bean
calls TopLink and gets a ClientSession from a
ServerSession and then gets a UnitOfWork from the
clientSession. I then register the object as new,
and commit the object, which get's written to the
database. My bean method returns the pk.
BeanInterface.createObject(Object obj) {
UnitOfWork uow = Singleton.getServerSession().getClientSession().getUnitOfWork();
uow.registerNewObject();
uow.commit();
2. I then read the object via my bean, by calling
get ClientSession from ServerSession and calling
readObject on it.
BeanInterface.readObject(Object obj) {
ClientSession session = Singleton.getServerSession().getClientSession();
return Utility.cloneObject(session.readObject(obj)); //Insures I am getting my own copy not a ref.
So far so good.
3. I then modify the object in my client and call
an update method on my bean. This methods does a
SessionServer.getClientSession().getUnitOfWork()
I then register my object as existing, deep
merge it and then commit the unit of work.
BeanInterface.updateObject(Object obj) {
UnitOfWork uow = Singleton.getServerSession().getClientSession().getUnitOfWork();
Object clone = uow.registerExistingObject(obj);
uow.deepMergeClone(obj);
uow.commit();
I check the database and the changes are there.
4. Now the kicker. I read the object again like in
step 2 and I get the original object not changes.
So what is in the cache is the orignal object,
wht is in the database is the modified object.
BeanInterface.readObject(Object obj) {
ClientSession session = Singleton.getServerSession().getClientSession();
return Utility.cloneObject(session.readObject(obj)); //Insures I am getting my own copy not a ref.
At this point I am stumped because the changes are in
the database, but not in the cache and I get no
exceptions.
Any thoughts?
Thanks
Mike H. SR.

Donald,
There are three methods you can use. registerExistingObject(), registerNewObject(), registerObject(). If you know that the object is new then using registerNewObject() is better because it does not do the existence check. If you know that that object exists then using registerExistingObject() saves you the overhead of having TopLink determine whether the object exists or not. registerObject() is really only useful if you do not know whether the object is new or exists. So registNew, registExisting are optimizations. In my case we are using registerNewObject() when a consumer says create the object, and registerExistingObject() when they are doing an update. There is also a store, which uses the registObject(), in this case the consumer does not know whether the object is new or existing.
I have been tracking the register method in my debugger and the problem may be in this method. Basically the registerObject or registerExistingObject is suppose to load the original object from the datbase if it is not in the cache. If it is in the cache is should clone it giving back the reference to the clone. In the end there will be two copies of the object the Clone on the cloned object list and the original on the original object list. The deepMergeClone should update the clone with the latest changes and then commit should be deltaing the clone and the original to determine what goes to the db. So far the is working ok because the data does filter to the database. If I turn caching off there are no problems.
Additional information. I did some testing and watching in the debugger, I know this, if I do a serverSession.getClientSession.readObject() or any select or read on the clientSession I get back the same reference every time, but serverSession.getClientSession().acquireUnitOfWork().readObject() returns a different object reference than the clientSession. This may be by design, also I believe the problem is the descriptor, but I cannot figure out what it is about the descriptor, because this only happens on a few descriptors.
By the way I tried the registerObject prior to posting to no avail and had it worked that would have meant there was a problem with registerExistingObject, because this is an existing object.
Thanks for the input.

Similar Messages

  • BW Info Object update problem

    Hi All,
    We are implementing BW. The Vendor and Document date info objects are not mapped directly to SAP R/3. Hence the data is not updating directly fromR/3 for these info objects. So I have written a small transfer routine to update the info object. But it is not getting updated with this routine. I am not sure where the problem is. Any ideas why?
    The following is the code of transfer routine. There are two infosources: communicaoin structure and Transfer structure. I wrote the routine in transfer structure. This routine is written for the info object Vendor. 
    PROGRAM CONVERSION_ROUTINE.
    Type pools used by conversion program
    TYPE-POOLS: RS, RSARC, RSARR, SBIWA, RSSM.
    Declaration of transfer structure (selected fields only)
    TYPES: BEGIN OF TRANSFER_STRUCTURE ,
      InfoObject SL_ACTIV: CHAR - 000004
      ACTIV(000004) TYPE C,
      InfoObject SL_AWORG: CHAR - 000010
      AWORG(000010) TYPE C,
      InfoObject SL_AWTYP: CHAR - 000005
      AWTYP(000005) TYPE C,
      InfoObject 0ACDOC_NO_F: CHAR - 000010
      BELNR(000010) TYPE C,
      InfoObject 0PSTNG_DATE: DATS - 000008
      BUDAT(000008) TYPE D,
      InfoObject 0ITEM_NUM: NUMC - 000003
      BUZEI(000003) TYPE N,
      InfoObject 0CHRT_ACCTS: CHAR - 000004
      CHARTACCTS(000004) TYPE C,
      InfoObject 0CREATEDON: DATS - 000008
      CPUDT(000008) TYPE D,
      InfoObject SL_CPUTM: TIMS - 000006
      CPUTM(000006) TYPE T,
      InfoObject 0CREDIT: CURR - 000017
      CREDIT(000009) TYPE P,
      InfoObject 0CURRENCY: CUKY - 000005
      CURRUNIT(000005) TYPE C,
      InfoObject 0CURTYPE: CHAR - 000002
      CURTYPE(000002) TYPE C,
      InfoObject 0DEBIT: CURR - 000017
      DEBIT(000009) TYPE P,
      InfoObject SL_DOCCT: CHAR - 000001
      DOCCT(000001) TYPE C,
      InfoObject SL_DOCLN: CHAR - 000006
      DOCLN(000006) TYPE C,
      InfoObject SL_DOCNR: CHAR - 000010
      DOCNR(000010) TYPE C,
      InfoObject SL_DOCTY: CHAR - 000002
      DOCTY(000002) TYPE C,
      InfoObject 0FISCPER: NUMC - 000007
      FISCPER(000007) TYPE N,
      InfoObject 0FISCVARNT: CHAR - 000002
      FISCVAR(000002) TYPE C,
      InfoObject SL_LINET: CHAR - 000005
      LINETYPE(000005) TYPE C,
      InfoObject SL_LOGSYS: CHAR - 000010
      LOGSYS(000010) TYPE C,
      InfoObject SL_POPER: NUMC - 000003
      POPER(000003) TYPE N,
      InfoObject 0QUANTITY: QUAN - 000015
      QUANTITY(000008) TYPE P,
      InfoObject 0UNIT: UNIT - 000003
      QUANUNIT(000003) TYPE C,
      InfoObject 0GL_ACCOUNT: CHAR - 000010
      RACCT(000010) TYPE C,
      InfoObject 0COMP_CODE: CHAR - 000004
      RBUKRS(000004) TYPE C,
      InfoObject 0COSTCENTER: CHAR - 000010
      RCNTR(000010) TYPE C,
      InfoObject SL_REFACT: CHAR - 000004
      REFACTIV(000004) TYPE C,
      InfoObject SL_RFDCCT: CHAR - 000001
      REFDOCCT(000001) TYPE C,
      InfoObject SL_RFDCLN: NUMC - 000006
      REFDOCLN(000006) TYPE N,
      InfoObject SL_RFDCNR: CHAR - 000010
        REFDOCNR(000010) TYPE C,
      InfoObject SL_REFRYR: NUMC - 000004
      REFRYEAR(000004) TYPE N,
      InfoObject SPL_CUR1: CUKY - 000005
      RTCUR(000005) TYPE C,
      InfoObject 0VERSION: CHAR - 000003
      RVERS(000003) TYPE C,
      InfoObject SPL_CUR2: CUKY - 000005
      RWCUR(000005) TYPE C,
      InfoObject 0FISCYEAR: NUMC - 000004
      RYEAR(000004) TYPE N,
      InfoObject 0CO_AREA: CHAR - 000004
      RZZKOKRS(000004) TYPE C,
      InfoObject 0PROFIT_CTR: CHAR - 000010
      RZZPRCTR(000010) TYPE C,
      InfoObject 0PACCOUNT: CHAR - 000010
      SACCT(000010) TYPE C,
      InfoObject 0PCOMP_CODE: CHAR - 000004
      SBUKRS(000004) TYPE C,
      InfoObject 0PART_CCTR: CHAR - 000010
      SCNTR(000010) TYPE C,
      InfoObject 0POSTXT: CHAR - 000050
      SGTXT(000050) TYPE C,
      InfoObject SL_PPRCTR: CHAR - 000010
      SZZPRCTR(000010) TYPE C,
      InfoObject SL_TMSTMP: DEC - 000015
      TIMESTAMP(000008) TYPE P,
      InfoObject 0SALES: CURR - 000017
      TURNOVER(000009) TYPE P,
      InfoObject 0RECORDMODE: CHAR - 000001
      UPMOD(000001) TYPE C,
      InfoObject 0USER_NAME: CHAR - 000012
      USNAM(000012) TYPE C,
      InfoObject 0VTYPE: NUMC - 000003
      VALUETYPE(000003) TYPE N,
      InfoObject 0VALUATION: NUMC - 000001
      VALUTYP(000001) TYPE N,
      InfoObject SL_WSDAT: DATS - 000008
      WSDAT(000008) TYPE D,
      InfoObject SL_SPLTMD: CHAR - 000001
      XSPLITMOD(000001) TYPE C,
      InfoObject 0ASSET_MAIN: CHAR - 000012
      ZZANLN1(000012) TYPE C,
      InfoObject 0ASSET: CHAR - 000004
      ZZANLN2(000004) TYPE C,
      InfoObject 0DEBITOR: CHAR - 000010
      ZZKUNNR(000010) TYPE C,
      InfoObject SL_ZZLFNR: CHAR - 000010
      ZZLIFNR(000010) TYPE C,
      InfoObject SL_ZRPRCR: CHAR - 000010
      ZZREPPRCTR(000010) TYPE C,
      InfoObject SL_ZTCDE: CHAR - 000020
      ZZTCODE(000020) TYPE C,
      InfoObject 0REF_DOC_NO: CHAR - 000016
      ZZXBLNR(000016) TYPE C,
    END OF TRANSFER_STRUCTURE .
    Global code used by conversion rules
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
          FORM COMPUTE_CREDITOR
    Compute value of InfoObject 0CREDITOR
    in communication structure /BIC/CSSPL_LINE
    Technical properties:
        field name      = CREDITOR
        data element    = /BI0/OICREDITOR
        data type       = CHAR
        length          = 000010
        decimals        = 000000
        ABAP type       = C
        ABAP length     = 000010
        reference field =
    Parameters:
    -->  RECORD_NO       Record number
    -->  TRAN_STRUCTURE  Transfer structure
    <--  RESULT          Return value of InfoObject
    <->  G_T_ERRORLOG    Error log
    <--  RETURNCODE      Return code (to skip one record)
    <--  ABORT           Abort code (to skip whole data package)
    FORM COMPUTE_CREDITOR
      USING    RECORD_NO LIKE SY-TABIX
               TRAN_STRUCTURE TYPE TRANSFER_STRUCTURE
               G_S_MINFO TYPE RSSM_S_MINFO
      CHANGING RESULT TYPE /BI0/OICREDITOR
               G_T_ERRORLOG TYPE rssm_t_errorlog_int
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel datapackage
    $$ begin of routine - insert your code only below this line        -
    DATA: l_s_errorlog TYPE rssm_s_errorlog_int.
      SELECT SINGLE CREDITOR FROM /BIC/AAPOSLVEN00
                    INTO RESULT
                    WHERE /BIC/SL_RFDCNR = TRAN_STRUCTURE-REFDOCNR.
       IF SY-SUBRC NE 0.
           CLEAR RESULT.
        ENDIF.
    returncode <> 0 means skip this record
      RETURNCODE = 0.
    abort <> 0 means skip whole data package !!!
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.
          FORM INVERT_CREDITOR
          Inversion of selection criteria for InfoObject 0CREDITOR
          This subroutine needs to be implemented only for SAP RemoteCubes
          (for better performance) and for the Report/Report Interface
          (drill through).
    -->  I_RT_CHAVL_CS       Ranges table for current InfoObject
    -->  I_THX_SELECTION_CS  Selection criteria for all other InfoObjects
    <--  C_T_SELECTION       Selection criteria for fields of
                              transfer structure
    <--  E_EXACT             Flag: Inversion was exact
    FORM INVERT_CREDITOR
      USING    I_RT_CHAVL_CS      TYPE RSARC_RT_CHAVL
               I_THX_SELECTION_CS TYPE RSARC_THX_SELCS
      CHANGING C_T_SELECTION      TYPE SBIWA_T_SELECT
               E_EXACT            TYPE RS_BOOL.
    $$ begin of inverse routine - insert your code only below this line-
      DATA:
        L_S_SELECTION LIKE LINE OF C_T_SELECTION.
    An empty selection means all values
      CLEAR C_T_SELECTION.
      L_S_SELECTION-FIELDNM = 'REFDOCNR'.
    Selection of all values may be not exact
      E_EXACT = RS_C_FALSE.
    $$ end of inverse routine - insert your code only before this line -
    ENDFORM.
    Thanks for the great help,
    Sobhan.

    Hi manoj,
    Welcome to SDN!!
    Check this blog:
    /people/sap.user72/blog/2005/09/05/sap-bw-and-business-content-datasources-in-pursuit-of-the-origins
    Bye
    Dinesh

  • Cache update problem in Integration Directory

    Hi all,
    We have a cache update problem in our PI development server.
    If we try to edit, save and activate any of the ID objects, under Cache notifications>Central Adapter Engine> all these objects are displayed as gray items.
    We have tried:
    1. Clearing the SLD Data Cache.
    2. Did SXI_CACHE complete refresh.
    3. Did CPA cache refresh.
    4. Did a complete cache refresh of the server.
    5. Restarted the server.
    But still the problem has not bee resolved. Could you pls provide your inputs and resolution points.
    Thank you very much.
    regards,
    Jack Nuson

    HI Jack ,
    first try to manually update the cache from ID select on your cache notifiaction and click on delta cache refresh button and refresh button .IF it does not yied any result then
    Perform a full cache refresh using the URL
    http://<host>:<port>/CPACache/refresh?mode=full . If the cache refresh happens properly then your problem will get resolved other wise you have to see the cache log to view why it failed there it will show you the exact reason . You might need to restart your java server also if the problem persist .
    Regards,
    Saurabh

  • Error while doing multiple object updation from EP ! object lock error

    HI all,
    I am doing multiple  object updation using a standard RFC(BAPI_PROJECT_MAINTAIN). The RFC i am calling from Enterprise portal. I am sending data to RFC one by one. But the error i am getting is object is locked by user so data can't be save.
    Though i am using Lock and unlock method before and after calling RFC the project lock error comes up.
    What might be the reason
    regards
    sandeep

    Hi Sandeep,
    Is the RFC you use for locking in the same model as the bapi BAPI_PROJECT_MAINTAIN? If it is not then you are using two connections for communication with the sap R/3 backend.
    You can do 2 things.
    1. You could add the RFCs for locking in the same model as the BAPI_PROJECT_MAINTAIN
    2. Instead of adding the RFCs in one model synchronize the connections the models use as follows:
    IWDDynamicRFCModel model1 = (IWDDynamicRFCModel) WDModelFactory.getModelInstance(Model1.class);
    IWDDynamicRFCModel model2 = (IWDDynamicRFCModel) WDModelFactory.getModelInstance(Model2.class);
    model1.setConnectionProvider(model2);
    You can do this in the wdDoInit. This will make sure both models use the same connection but closing a connection will close both at the same time.
    The same problem applies to commit/rollback functionality.
    Regards,
    Jeschael

  • How to cache the objects MANUALLY?

    hello
    some o-r mapping tools can cache the objects that have been queried,then next time these objects are required,it don't need to access the database again,it can also monitor the database updating.
    i wonder how i can implement such "cache" function MANUALLY? because i DON'T want to use ANY o-r mapping tools. i only use the jdbc to query database,then generate the object.
    who can give me some clue?? or articles? or sample codes??
    thank you!!!!!

    no you don't understand me,what i want to know is the
    mechanism of the cache,and how to implement it myself
    without using the o-r mapping tools.
    the dao pattern can encapsulate the database
    access,but it can NOT cache the object .First you need to define how the caching occurs.
    - Can the data in the database change without going through your code?
    - Are there multiple copies of your app running at the same time. If yes then what happens if one is updated?
    - How many of these can there be and what impact will this have on memory?
    - etc.
    You also need to identify the 'identity' of an object.
    A simple strategy....
    - Some layer requests an object using the 'identity'.
    - The database layer code looks in a hash for the 'identity'. If it finds it it returns it.
    - If it doesn't find it it uses a DAO to load it, then puts it in the hash, then returns it.

  • Distributed Cache - large objects

    Hi,
    I have a need to store a large collection of object associated with one key in the cache. And updates to the cache will happen with one of the object in the collection.
    How does coherence handle the sync b/w the distributed cache -- will it be like the whole collection marked dirty and synched again or just the bits that got changed. Ours is a perf intensive application so would like to know the implications of the same.
    Thanks in advance for your suggestions.
    - Anand

    Hi Anand,
    You can use InvocableMap (also see Provide a Data Grid for this - a very simple example is attached.
    Regards,
    Dimitri<br><br> <b> Attachment: </b><br>Main.java <br> (*To use this attachment you will need to rename 295.bin to Main.java after the download is complete.)

  • After Effects CS6: Cache and Reload Footage Problem

    After Effects CS6: Cache and Reload Footage Problem
    I am having trouble getting my footage to update in an AE project. 
    In an existing project, there is an image sequence in a composition.  I have saved and closed AE, modified the footage (same dimensions and qty. of frames, only the pixel data changes), and then re-launched AE and opened the project.  Though I have changed the footage, the old content still appears.
    To resolve this, I have done the following:
    Edit>Purge>All Memory
    Edit>Purge>Image Cache Memory
    Edit>Preferences>Media & Disk Cache>Empty Disk Cache
    Edit>Preferences>Media & Disk Cache>Clean Database & Cache
    From the Project window I've selected all footage and selected Reload
    None of these got the footage to update.  I could double-click on the footage in the project bin and scrub the play head and the old footage was still displayed.
    Finally I had to replace the footage with itself and that resolved the issue.
    If this is operator error, lack of understanding the cache functions, or something else, I'd appreciate some assistance. I don't recall this behavior in CS 5.5, so I am guessing this is a change in CS 6.
    Win 7 Pro 64bit Service Pack 1
    Intel Xeon CPU X5450 @ 3.00 GHz 2.99 GHz
    RAM 20 GB

    about Illustrator and Photoshop files in CS6 especially - you should work with Ctrl/Cmd+E (Edit Original).
    when in Ae and you want to change a source file, use this command on one of the layers
    from the source file you wish to change (doesn't matter if its in the timeline or project window) and
    your original software linked to that file will open.
    when you work this way you make AE reload that file and any change after that will be seen back in AE immediately.
    it is also very convenient way to work because there can be no confusion on which file you are on
    if you work with multiple source files for example.
    even if you made the change with your Photoshop/Illustrator opened file and got back to Ae
    and didn't see any change - press on one of the layers Ctrl/Cmd+E and this will refresh it immediately.
    This is the case in CS6.
    in CC I have noticed that any change I make is refreshed immediately in Ae as if it rechecks the changes all the time,
    and didn't even need to use Ctrl/Cmd+E but it's a good habit all the same.
    didn't come across a case where that didn't work for be but
    if all fails you could always change the folder location of the file, let Ae lose it, then replace footage of the file,
    and thus let Ae re-link it back.

  • Caching Long Objects

    Hi,
    I would like to know why is Long objects are not cached internally and pooled in Java. Since Long objects are immutable there shouldn't be any problem in doing this right? Let me know am I missing anything here...Currently for one of my applications Iam planning to do this caching of Long objects myself. But the code for that looked pretty ugly as I need to put the newly constructed Long object into a HashMap and get the reference to the previously cached Long object. I believe providing this implementation will reduce my application memory requriements drastically as I need to cache huge volumes of data (around 1 GB of data need to be cached). Will there be any problems in providing an implementation like this ... Are there any better alternatives ?

    Objects in general take somewhere in the region of 24-32 bytes to represent (excluding any member
    variables) therefore Long will require somewhere in the region of 32 to 40 bytes to represent. The
    hashMap you use to cache your Longs creates additional overhead (we'll ignore this for now as it can be
    amortised over the individual unique Longs that you cache.
    a long takes 8 bytes to store.
    a reference takes 4 bytes (on a 32 bit machine 8 on a 64 bit JVM)
    Therefore on 64 bit machines there is no advantage. Caching will always take more memory then using
    native longs.
    on a 32 bit VM the advantage of using cached Longs when compared to native longs occurs when you
    have an average of at least 8 references to each unique Long. (for a large number of unique Longs)
    However there are, I believe, plans to do this in 1.5. However they are not doing it to save memory. They
    are doing it to improve the performance of autoboxing. Also the cache will not be dynamic it will be of
    fixed size and created when the VM starts up. Basically values in the range -128 to 127 (or something
    similar) will be cached for byte, short, int , long.
    matfud

  • ArrayCollection merging and Objects update

    Hi,
    I wonder if there is a common way or something provided in the framework to handle objects update.
    For instance suppouse you have and application that displays a list of Cars, and you want to update that list each 1min automatically since some cars gets busy, offline, etc (each item list displays car number and status icon).
    Also you want to allow users to select a car to make another request and bring details of the car status like gps position, status, fuel, driver, list of recent trips... (this car details also must be updated each one minute)
    Now if I make a request to update the cars list and clear the ArrayCollection that contains the cars displayed by the list and fill it with the new data, that will force the List to be refreshed loosing for instance selected car and other issues. Also if I get all the car details and step over the last details all the details component data will be redraw. So it seems that the way to go is not to completly replace the objects but update it's properties or elements.
    So the question is, There is any common way to update this elements without having to code that update myself? Is not that I'm lazy but maybe there is a best practice to do that or something.
    (I'm not using Blaze or LiveDataCycle)
    thanks in advance.
    Polaco.

    Hi,
    Try this link -
    http://sqlblog.com/blogs/andy_leonard/archive/2007/07/09/ssis-design-pattern-incremental-loads.aspx
    sathya - www.allaboutmssql.com ** Mark as answered if my post solved your problem and Vote as helpful if my post was useful **.

  • Cache. Pls update

    Hi ,
    Pls tell me how many types of Cache in XI are there and
    explaining them simply.
    Regards

    Hi
    There are 3 caches,
    1) SLD Cache - Used to cache the objects you created in SLD to runtime.You can check if SLD cache is updated or not in Integration repostory or Integration Directory.
    2) CPA cache - Used to cache , adapter or communication channels as well as changes to adapter fraemwrok to runtime.You can check the status of this cache in http://<host><port>/CPACache
    3) Repository cache - Used to cache Development obejcts from IR and ID e.g Message Type , Interface, Receiver determination etc .You can track this in SAP Transaction cose SXI_CACHE.
    Hope this help you.
    Refer below link for Cache monitoring
    http://help.sap.com/saphelp_nw04/helpdata/en/14/80243b4a66ae0ce10000000a11402f/frameset.htm
    Properties for Service SAP XI AF CPA Cache (SAP Library - Configuration of Usage Type Process Integration (PI))
    http://help.sap.com/saphelp_nw04s/helpdata/en/a8/22ee41c334c717e10000000a155106/frameset.htm
    How to Handle XPI Caches in SAP NetWeaver 2004s (NW7.0)
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/c0332b2a-eb97-2910-b6ba-dbe52a01be34
    Check this note 764176, & below links.
    Unable to determine name of central adapter engine
    Wrong Adapter engine in RFC Adapter after export/import
    Check this guide for how to handle the cache:
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/1a69ea11-0d01-0010-fa80-b47a79301290

  • Ap update problem

    I have an ap, Barcode Scanner that will not complete an update.  It keeps trying to install.  I went in and did a force stop on Market and that did not work.  I uninstalled the ap but the update is still running.  How can I kill it?
    Thanks

    I had that problem last week and this worked for me:
    Go to Settings-->Applications-->Manage applications. Click on "Market" app and "Clear cache" and "Uninstall updates".
    Everything worked fine after that.

  • Recordset - updating 2 tables with 1 recordset using application object update record

    I have a recordset that uses a field from 2 different tables
    with a select statement where clause that joins a userid. I can
    display the field’s data just fine. Now I want to use the
    Application object “update record” so I can modify
    either of the fields. The problem is the Application object
    “update record” only allows you to update one table.
    How does Dreamweaver mx 2004 allow me to update 2 tables with one
    recordset and 1 submit button? Currently using php.
    Example of where:
    Where member.userid = member_detail.userid
    I tried creating the one form with the field from the first
    table and that works just fine. I added the other field from the
    other table into the form but ofcourse there isn’t any code
    that will update the second table so it won’t work.
    My application requires me to update alot of fields between 2
    tables at the same time.
    Does anyone know a way using Dreamweaver mx 2004 to do this?
    I don’t have much php experience.

    jon-rookie wrote:
    > DreamerJim,
    >
    > I am sorry but I don't think you are correct. I just
    can't believe that with
    > all the powers to be at Macromedia and now Adobe can't
    figure out how to update
    > two tables at once. There are millions of db's out there
    that require this. I
    > spent several hours today perusing lots of posts on the
    internet. It seems I
    > am not the only one out there that has asked this
    question. Unfortunately
    > there are no good answers yet to my surprise.
    >
    > I did find a Dreamweaver extension that does exactly
    what I myself and many
    > others want. The problem is it is no longer available
    unless you purchase a
    > bundle of software from Adobe.
    >
    > I have not looked into it in detail so I am not 100%
    sure that is accurate!
    >
    > Still, alot of php programmers do this all the time
    without much trouble. I
    > just want to know if Dreamweaver mx 2004 has the
    capability if a person knows
    > the right steps.
    >
    > Hopefully a Dreamweaver expert will post something to
    let us know for sure.
    > Until then I am stuck.
    >
    Not even CS3 has this built in, you will either have to code
    it yourself
    or buy the extension you have found. Dreamweaver gives you
    basic
    features to help you develop applications, but if you want to
    do
    anything really clever you have to do it yourself.
    One thing to consider is maybe creating an SQL view that is
    can be
    updated. I am pretty sure it exists, then you use the view
    instead of
    the table in the update behaviour. I have never done it
    myself, but I am
    sure it can be done.
    Steve

  • Update problem (deepMergeClone, registerObject, ... )

    Hi all,
    I have a SLSB in which I have an "updateProduct(Product rmiProduct)" function. Role of this function is: update one product and its relationship (Prices, Images, ...) and at the same time update other products position if needed. (concept to order products)
    To update the product, I use uow.deepMergeClone(rmiProduct); ... this works fine. In the same time I want to update other productsPosition with for example this method: decPosition(findProductsByPositionGreater(currentPosition.intValue()));
    And in the decPosition(..) method I use registerObject to update objects:
    Product productClone = (Product) uow.registerObject(product);
    It doesn't work... Other products position are not updated. Only the main product is updated correctly. To understand what could be wrong, I commented the line :
    //uow.deepMergeClone(rmiProduct);
    After that, products position were successfully updated! ...
    When we do a deepMergeClone(...) we cannot do other object updates?
    Please, If you need further information or if you can directly help me with some comments... don't hesitate!
    Thanks in advance!

    The method deepMergeClone will iterate over the provided object tree merging the data into the clones in the UnitOfWork. If the positions of the other products are not updated in the object tree deepMergeClone will overwrite the changes with the data from the object tree. To prevent this issue you can use mergeCloneWithReferences() or mergeClone() which will not cascade to the related products. Alternatively you can ensure that deepMergeClone is executed before you make any changes to the other products.
    --Gordon                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Statement caching and batch update

    Can these 2 JDBC features work together ?
    Is it possible while statement is cached to be reparsed (soft) if used in batch update ?
    I am asking this questions because i have a sitution where an insert is cached using implicit statement caching and then put in a batch to exeute batch updates !!! From statspack reports i find that 1/3 of statements are reparsed ... even soft !!!

    Statement caching and batch update work fine together. The most common cause of unexpected soft parses is changing the type of some parameters. If you first bind one type, setInt(1, ...), do addBatch, then bind another type to the same parameter, setString(1, ...), and do addBatch, you will get a soft reparse. There is nothing the JDBC driver can do about this, the RDBMS requires it.
    In general, whatever parse behavior you see with statement caching you would also see without it.
    Douglas

  • How to check/verify running sql in lib cache is using updated statistics of table

    How to check/verify running sql in lib cache is using updated statistics of table used in from clause.
    one of my application table is highly busy i.e frequent update/insert/delete.
    we gather table stats every 30 min.

    Hello, "try dynamic sampling" = think "outside the box", maybe hit two birds with same stone.
    As a matter of fact, I was just backing up your statement: "30 minutes seems pretty extreme"
    cheers

Maybe you are looking for