EJB-QL, multiply call returns same result

Hi,
I have a strange problem with dynamic QL. When I’m calling the same Entity with almost the same query (different values in the where clause) the query returns the same result.
Ex:
First (good) SELECT OBJECT(ejb) FROM table AS ejb where ejb.x='9-99-99-9999' AND ejb.y='8-88-88-8888’
Second (wrong) SELECT OBJECT(ejb) FROM table AS ejb where ejb.x='9-99-99-9993' AND ejb.y='8-88-88-8888’
The second time, the entity from the first query is returned again.
Any input will be greatly appreciated.
Best regards,
Gustav

Hi,
What I would do to start nailing down the issue is to print out the actual SQL that is being sent to the DBMS.
If the actual SQL matches what you expect it to be, then the problem is the Database or the formulation of the query. If the SQL does not match up to the EJB QL that is being submitted, then there's a problem with Dynamic Queries.
In the weblogic.ejb.QueryHome
you can get the SQL that will be sent to the dbms by doing:
String myEJBQL = "SELECT OBJECT(ejb) FROM etc....";
String myActualSQL = queryHome.nativeQuery(myEJBQL);
Try this and let us know the result.
-thorick

Similar Messages

  • Oracle:JDBC Call returns no results, SQL*Plus returns 1 record, Please help

    Any help would be greatly appreciated.
    Running 9.2.0.5.0, and using latest 9.2 JDBC 1.4_g drivers in thin mode.
    Execute the following query from SQL*Plus and it returns one row, from JDBC using a PreparedStatement, I get no results. Here's the query, table def, record, etc.:
    Query:
    SELECT
    ID_WEB_FRM,ID_WEB_SIT,CDE_LVL_1_FUNC,
    CDE_LVL_2_FUNC,NUM_WEB_FUNC_PG,NUM_WEB_PG_ID
    FROM
    WEB_FRM
    WHERE
    ID_WEB_FRM = ' '
    OR
    (ID_WEB_SIT = 'test' AND CDE_LVL_1_FUNC = ' '
    AND CDE_LVL_2_FUNC = 'u2T' AND NUM_WEB_FUNC_PG = 1
    AND NUM_WEB_PG_ID = 0)
    Record returned from SQL*Plus:
    ID_WEB_FRM ID_WEB_SIT CDE CDE NUM_WEB_FUNC_PG NUM_WEB_PG_ID
    NfRRmc5XZu test u2T 1 0
    Both in the data returned and the query, there are no blanks, but they are a single space instead (hard to see in message here).
    Java code:
    int count = 1;
    findDBNameStatement.setString(count++," ");
    findDBNameStatement.setString(count++,form.getSiteID());
    findDBNameStatement.setString(count++," ");
    findDBNameStatement.setString(count++, form.getFunctionID());
    findDBNameStatement.setInt(count++,form.getPageNumber());
    findDBNameStatement.setInt(count++,form.getSectionNumber());
    ResultSet resultSet = findDBNameStatement.executeQuery();
    ResultSetMetaData metaData = resultSet.getMetaData();
    resultSet.next() returns false
    DB table:
    CREATE TABLE web_frm (
    ID_WEB_FRM varchar2(10) NOT NULL,
    ID_WEB_SIT varchar2(20) NOT NULL,
    NAM_WEB_FRM varchar2(40),
    TXT_EMAIL_SUBJ varchar2(50),
    CDE_LVL_1_FUNC char(3),
    CDE_LVL_2_FUNC char(3) NOT NULL,
    NUM_WEB_FUNC_PG int NOT NULL,
    NUM_WEB_PG_ID smallint NOT NULL,
    DTE_WEB_FRM_EFF date NOT NULL,
    DTE_WEB_FRM_TRM date,
    CDE_VLDT_RUL char(3),
    DTE_LAST_EXPRT date,
    TXT_CNFRMN_MSG varchar2(4000),
    IND_UPDT_ALWD char(1) NOT NULL,
    TXT_RECAP_HDR varchar2(4000),
    TXT_RECAP_FTR varchar2(4000),
    CDE_WEB_OBJ char(3),
    NUM_MAX_FRM_WIDTH number(4,0),
    IND_RECAP_PG char(1) NOT NULL,
    IND_CNFRM_PG char(1) NOT NULL,
    IND_DSPL_CNFRM_NUM char(1) NOT NULL,
    CNT_SUBM_MAX int,
    TXT_CHCE_ADD_MSG varchar2(255),
    TXT_CHCE_MOD_MSG varchar2(255),
    TXT_WEB_HDR varchar2(4000),
    TXT_WEB_FTR varchar2(4000),
    TXT_WAIT_LIST_MSG varchar2(255),
    FORMOBJECTHEIGHT int NOT NULL,
    FORMOBJECTWIDTH int NOT NULL
    ALTER TABLE web_frm ADD ( CONSTRAINT PK_web_frm PRIMARY KEY (ID_WEB_FRM));
    ALTER TABLE web_frm ADD ( CONSTRAINT UK_web_frm UNIQUE (ID_WEB_SIT,CDE_LVL_1_FUNC,CDE_LVL_2_FUNC,NUM_WEB_FUNC_PG,NUM_WEB_PG_ID)) ;
    Thanks,
    Matt

    That's not quite right. From the javadocs:
    next
    public boolean next()
    throws SQLException
    Moves the cursor down one row from its current position. A ResultSet cursor is initially positioned before the first row; the first call to the method next makes the first row the current row; the second call makes the second row the current row, and so on.
    If an input stream is open for the current row, a call to the method next will implicitly close it. A ResultSet object's warning chain is cleared when a new row is read.
    Returns:
    true if the new current row is valid; false if there are no more rows
    Throws:
    SQLException - if a database access error occurs

  • JDBC Call returns no results, SQL*Plus returns 1 record, Please help!

    Any help would be greatly appreciated.
    Running 9.2.0.5.0, and using latest 9.2 JDBC 1.4_g drivers in thin mode.
    Execute the following query from SQL*Plus and it returns one row, from JDBC using a PreparedStatement, I get no results. Here's the query, table def, record, etc.:
    Query:
    SELECT
    ID_WEB_FRM,ID_WEB_SIT,CDE_LVL_1_FUNC,
    CDE_LVL_2_FUNC,NUM_WEB_FUNC_PG,NUM_WEB_PG_ID
    FROM
    WEB_FRM
    WHERE
    ID_WEB_FRM = ' '
    OR
    (ID_WEB_SIT = 'test' AND CDE_LVL_1_FUNC = ' '
    AND CDE_LVL_2_FUNC = 'u2T' AND NUM_WEB_FUNC_PG = 1
    AND NUM_WEB_PG_ID = 0)
    Record returned from SQL*Plus:
    ID_WEB_FRM ID_WEB_SIT CDE CDE NUM_WEB_FUNC_PG NUM_WEB_PG_ID
    NfRRmc5XZu test u2T 1 0
    Both in the data returned and the query, there are no blanks, but they are a single space instead (hard to see in message here).
    Java code:
    int count = 1;
    findDBNameStatement.setString(count++," ");
    findDBNameStatement.setString(count++,form.getSiteID());
    findDBNameStatement.setString(count++," ");
    findDBNameStatement.setString(count++, form.getFunctionID());
    findDBNameStatement.setInt(count++,form.getPageNumber());
    findDBNameStatement.setInt(count++,form.getSectionNumber());
    ResultSet resultSet = findDBNameStatement.executeQuery();
    ResultSetMetaData metaData = resultSet.getMetaData();
    resultSet.next() returns false
    DB table:
    CREATE TABLE web_frm (
    ID_WEB_FRM varchar2(10) NOT NULL,
    ID_WEB_SIT varchar2(20) NOT NULL,
    NAM_WEB_FRM varchar2(40),
    TXT_EMAIL_SUBJ varchar2(50),
    CDE_LVL_1_FUNC char(3),
    CDE_LVL_2_FUNC char(3) NOT NULL,
    NUM_WEB_FUNC_PG int NOT NULL,
    NUM_WEB_PG_ID smallint NOT NULL,
    DTE_WEB_FRM_EFF date NOT NULL,
    DTE_WEB_FRM_TRM date,
    CDE_VLDT_RUL char(3),
    DTE_LAST_EXPRT date,
    TXT_CNFRMN_MSG varchar2(4000),
    IND_UPDT_ALWD char(1) NOT NULL,
    TXT_RECAP_HDR varchar2(4000),
    TXT_RECAP_FTR varchar2(4000),
    CDE_WEB_OBJ char(3),
    NUM_MAX_FRM_WIDTH number(4,0),
    IND_RECAP_PG char(1) NOT NULL,
    IND_CNFRM_PG char(1) NOT NULL,
    IND_DSPL_CNFRM_NUM char(1) NOT NULL,
    CNT_SUBM_MAX int,
    TXT_CHCE_ADD_MSG varchar2(255),
    TXT_CHCE_MOD_MSG varchar2(255),
    TXT_WEB_HDR varchar2(4000),
    TXT_WEB_FTR varchar2(4000),
    TXT_WAIT_LIST_MSG varchar2(255),
    FORMOBJECTHEIGHT int NOT NULL,
    FORMOBJECTWIDTH int NOT NULL
    ALTER TABLE web_frm ADD ( CONSTRAINT PK_web_frm PRIMARY KEY (ID_WEB_FRM));
    ALTER TABLE web_frm ADD ( CONSTRAINT UK_web_frm UNIQUE (ID_WEB_SIT,CDE_LVL_1_FUNC,CDE_LVL_2_FUNC,NUM_WEB_FUNC_PG,NUM_WEB_PG_ID)) ;
    Thanks,
    Matt

    I have verified the parameters and such, and if I run as a Statement instead of a PreparedStatement, the query works fine. After some more troubleshooting, I narrowed the problem down, but not sure of the fix.
    If I eliminate teh extra parameters and simplify things to:
    SELECT ID_WEB_FRM FROM WEB_FRM WHERE ID_WEB_SIT = 'test' AND CDE_LVL_2_FUNC = 'u2T' AND NUM_WEB_FUNC_PG = 1 AND NUM_WEB_PG_ID = 0
    The code works. But if I add the additional WHERE clause of CDE_LVL_1_FUNC = ' ' (has single space), it returns no data (record in the DB has single space in this new column. Query that does not work:
    SELECT ID_WEB_FRM FROM WEB_FRM WHERE ID_WEB_SIT = 'test' AND CDE_LVL_1_FUNC = ' ' AND CDE_LVL_2_FUNC = 'u2T' AND NUM_WEB_FUNC_PG = 1 AND NUM_WEB_PG_ID = 0
    It appears the JDBC Driver is trimming the parameter when it is a space when set through a PreparedStatement.setString(2," ")

  • Stored procedure call returns null result set when using temp table in sp!

    Here's a really odd problem...
    SQL Server stored procedure called sp_Test takes 1 input INT. Here is the code I call it with
    cStmt = connection.prepareCall("{call sp_Test(?)}");
    cStmt.setInt(1, 44);
    cStmt.execute();
    rs = cStmt.getResultSet();When the body of the stored proc is
    CREATE PROCEDURE sp_Test(@i_NodeID INT)
    AS
    BEGIN
      SELECT node_id FROM tbl_NavTree
    END
    GOthe query works and I get all node_id back in rs
    BUT when the body of the stored proc is
    CREATE PROCEDURE sp_Test(@i_NodeID INT)
    AS
    BEGIN
      CREATE TABLE #Descendants(
        descendant_id INT
      SELECT node_id FROM tbl_NavTree
      DROP TABLE #Descendants
    END
    GOThe rs comes back as NULL. Really really weird if you ask me. I also tried removing the DROP TABLE line just in case the SELECT had to be the last statement but still NULL.
    Final note is that BOTH the above stored proc bodies work when executed within SQL Server query analyser.
    Must be JDBC .. what can it be!??

    DROP TABLE #DescendantsMS SQL Server - right?
    Then don't drop the table.
    From the MS docs for "create table"
    Local temporary tables are visible only in the current session;
    A local temporary table created in a stored procedure is dropped automatically when the stored procedure completes. The table can be referenced by any nested stored procedures executed by the stored procedure that created the table. The table cannot be referenced by the process which called the stored procedure that created the table.

  • My iphone 6 connects to the car via bluetooth, the music works good, but the phone calles does not work.  It looks like it is working but doesn't.  I have tried in my Hyundai and a Dodge rent car and get the same results.  I updated the last 8.0.2.

    My iphone 6 connects to the car via bluetooth, the music works good, but the phone calls does not work.  It looks like it is working but doesn't.  I have tried in my Hyundai Sonata and a Dodge Dart rent car and get the same results.  I updated the last 8.0.2.  It worked the first day i had the phone, and then i updated to Ios 8.0.2 and it quit working.
    Now when i get in the car, it acts like it is connected and makes the same call it was on after syncing to bluetooth, but it really isn't on a call.  This is happening on both cars.
    Does anyone know if this is the phone and i need to take it to Apple or if there is an issue that Apple is working on getting a fix for?
    My son in law has the exact same phone as me, we both got the on 10/6, he had a Dodge Dart and his is working via bluetooth.
    Someone HELP please, as i consider this a safety issue by not having my calls go to bluetooth.

    We had the same problem, but figure out the solution.
    You MUST have at least 1 song added to your ITUNE!  After you add a free song, then everything else should work as normal!
    Hope this helps!

  • The same selection doesn't return the same result in 2 identical systems

    Hi,
    After a copy we have 2 systems with same data.
    In a program the same selection doesn't returns the same result, it seems that the sort is different.
    I have checked indexes but they are ok in both systems.
    Here is the selection:
    SELECT but000~partner
    INTO TABLE lt_partner
    *UP TO 50 ROWS
    FROM but000
    JOIN but020
      ON but020partner = but000partner
    JOIN adrc
      ON adrcaddrnumber = but020addrnumber
    JOIN but100
      ON but100partner = but000partner
      WHERE but020~addr_valid_from LE '20100727000000'
      AND   but020~addr_valid_to   GE '20100727000000'.
    Is there a customizing point to define how the database must be sorted ?
    Thanks.
    Edited by: julien schneerberger on Jul 27, 2010 4:18 PM

    Hi,
    Thank you for your answer.
    Result is the same and I don't sort data after the selection.
    Do you think the system copy has "broke" the records order in database ?
    If it is the case it will be impossible to reproduce the same sort, is it right ?
    Edited by: julien schneerberger on Jul 27, 2010 5:19 PM
    Edited by: julien schneerberger on Jul 27, 2010 5:20 PM

  • 2 queries should return the same result (but they dont...)

    hello
    i have a following query:
    select col1,extract(year from datum) yr, COUNT(*)
    from tableA@dblink where
    DATUM between '1-jan-1985' and '31-dec-2012'
    and col2 > 100 and col2 not in ('999999')
    and TRIM(TO_CHAR(col1)) in ('0','1')
    group by col1,extract(year from DATUM);the above query returns the count: 143 982 for year 1991
    however when i put the filter directly into this year the query returns a different number: 143 917
    select col1,extract(year from datum) yr, COUNT(*)
    from tableA@dblink  where
    DATUM between '1-jan-1991' and '31-dec-1991'
    and col2 > 100 and col2 not in ('999999')
    and TRIM(TO_CHAR(col1)) in ('0','1')
    group by col1,extract(year from DATUM);please can you help me understand why is this happening and why these 2 counts are different?
    id appreciate any tips
    thanks very much
    rgds

    UserMB wrote:
    please can you help me understand why is this happening and why these 2 counts are different?
    id appreciate any tipsThis is tricky. All others of cause are right. You must compare date columns with date values.
    If you don't explicitly compare as a date value, then it might happen that a string comparison is made.
    And if that happens both of your counts would return a wrong result. For example all dates that start with
    '4' are not counted. Like '4-jan-1991'. The string '4-jan-1991' is greater then the string '31-dec-1991'. Therefore it would not be included in the count.
    I don't think this happened. But the danger is there.
    However I have a problem seeing, what the difference between your two counts can be.
    The two important parts are the date between filter and the group by condition.
    DATUM between '1-jan-1985' and '31-dec-2012'
    DATUM between '1-jan-1991' and '31-dec-1991'
    group by col1,extract(year from DATUM);The second option returns less results than the first option. Some rows must be missing because of this different filter condition.
    If this would be a text comparison then there shouldn't be a difference. Only if it is a date comparison then this could be explained.
    Here is an example:
    Dates like 31-dec-1991 17:53:14 are included in the first count+group, but not included in the second count.
    Why? Because the string '31-dec-1991' is converted into a date. This date is 31-dec-1991 00:00:00 (midnight). Everything from this day, that is not exactly on midnight is greater than this value and therefore not included in your second query.
    So as others already pointed out you need to either truncate the date or to compare it a little differently.
    select col1,extract(year from datum) yr, COUNT(*)
    from tableA@dblink 
    where DATUM >= to_date('01-01-1991','dd-mm-yyyy')
    and  DATUM < to_date('01-01-1992','dd-mm-yyyy')
    and col2 > 100 and col2 not in ('999999')
    and TRIM(TO_CHAR(col1)) in ('0','1')
    group by col1,extract(year from DATUM);This should give the same result as your first query.
    Note that I changed the month from a month name to a number. This makes it independent from national language settings. E.g. DEZ = German, DEC = American
    Edited by: Sven W. on Oct 9, 2012 2:04 PM

  • Returning total sum plus pivoted sums in same result set

    I want to return a result set in the following format:
    YEARMONTH Total ModelA ModelB ModelC
    200101    0     0      0      0
    200102    10    5      5      0
    200103    8     2      2      4where the total is the sum of the hours for all model types grouped by yearmonth, and the individual model columns are the sum of hours per model type grouped by yearmonth. I can get the correct results using the following query with nested selects:
            select distinct yearmonth,
         sum(a.hours) as Total,
         (select sum(b.hours) from model_hours b
             where model = 'ModelA' and a.yearmonth = b.yearmonth) as ModelA,
            (select sum(b.hours) from model_hours b
             where model = 'ModelB' and a.yearmonth = b.yearmonth) as ModelB,
            (select sum(b.hours) from model_hours b
             where model = 'ModelC' and a.yearmonth = b.yearmonth) as ModelC
        from model_hours a
        group by yearmonth
        order by yearmonthI was curious to try using the pivot function in Oracle 11 to achieve the same results, and am able to get all the results EXCEPT the total hours using the following query:
        select * from (
             select yearmonth, hours, model
             from model_hours a
        pivot
             sum(hours)
             for model in ('ModelA', 'ModelB', 'ModelC')
        order by yearmonthwhich returns this result:
    YEARMONTH  ModelA ModelB ModelC
    200101     0      0      0
    200102     5      5      0
    200103     2      2      4I have not been able to figure out how to also get the sum of the hours for all models, grouped by yearmonth, into this resultset. Is it possible? And if so, would it be likely to be more efficient than the nested selects? This particular table has some 200K rows right now.

    Hi,
    923402 wrote:
    Frank, thank you so much. I added a bunch of nvl() functions and it works now. Didn't have a chance to try it with the other answer but it looks like it would be similar.
    I'm still curious as to whether doing it this way is more efficient than my original query, using nested selects.Definitely! Scalar sub-queries, like you did in your first message, will require multiple passes through the table. SELECT ... PIVOT only requires one.
    Here's another way that should be as efficient as SELECT ... PIVOT:
    SELECT       yearmonth
    ,       SUM (hours)                                   AS total
    ,       NVL (SUM (CASE WHEN model = 'ModelA' THEN hours END), 0)     AS modela
    ,       NVL (SUM (CASE WHEN model = 'ModelB' THEN hours END), 0)     AS modelb
    ,       NVL (SUM (CASE WHEN model = 'ModelC' THEN hours END), 0)     AS modelc
    FROM       model_hours
    GROUP BY  yearmonth
    ORDER BY  yearmonth
    ;The NVLs are only necessary for display; you don't need them to get the correct total.
    I don't have access to a SQL efficiency testing program; otherwise, I'd test it myself; if you don't think you can answer I'll just give it to our overworked DBA. Ask your DBA if you can use EXPLAIN PLAN.

  • Same Query returning different result (Different execution plan)

    Hi all,
    To day i have discovered a strange thing: a query that return a different result when using a different execution plan.
    The query :
    SELECT  *
      FROM schema.table@database a
    WHERE     column1 IN ('3')
           AND column2 = '101'
           AND EXISTS
                  (SELECT null
                     FROM schema.table2 c
                    WHERE a.column3 = SUBSTR (c.column1, 2, 12));where schema.table@database is a remote table.
    when executed with the hint /*+ ordered use_nl(a c) */ these query return no result and its execution plan is :
    Rows     Row Source Operation
          0  NESTED LOOPS  (cr=31 r=0 w=0 time=4894659 us)
       4323   SORT UNIQUE (cr=31 r=0 w=0 time=50835 us)
       4336    TABLE ACCESS FULL TABLE2 (cr=31 r=0 w=0 time=7607 us)
          0   REMOTE  (cr=0 r=0 w=0 time=130536 us)When i changed the execution plan with the hint /*+ use_hash(c a) */
    Rows     Row Source Operation
       3702  HASH JOIN SEMI (cr=35 r=0 w=0 time=497839 us)
      22556   REMOTE  (cr=0 r=0 w=0 time=401176 us)
       4336   TABLE ACCESS FULL TABLE2 (cr=35 r=0 w=0 time=7709 us)It seem that when the execution plan have changed the remote query return no result.
    It'is a bug or i have missed somthing ?
    PS: The two table are no subject to insert or update statement.
    Oracle version : 9.2.0.2.0
    System version : HP-UX v1
    Thanks.

    H.Mahmoud wrote:
    Oracle version : 9.2.0.2.0
    System version : HP-UX v1Hard to say. You're using a very old and deprecated version of the database, and one that was known to contain bugs.
    9.2.0.7 was really the lowest version of 9i that was considered to be 'stable', but even so, it's old and lacking in many ways.
    Consider upgrading to the latest database version at your earliest opportunity. (or at least apply patches up to the latest 9i version before querying if there is bugs in your really low buggy version)

  • Query returning zero results for yesterdays same hour

    I have the following query:
    SELECT
    d_dtm,
    BTS_ID,
    CASE WHEN D_DTM = (D_DTM-24/24)
    THEN sum(V_ATT_CNT)
    END AS "LASTATT",
    sum(V_ATT_CNT) as "V_ATT_CNT",
    CASE WHEN D_DTM = D_DTM
    THEN sum(V_ATT_CNT)
    END AS "ATT"
    FROM
    DMSN.DS3R_FH_1XRTT_FA_LVL_KPI
    WHERE
    to_date(D_DTM, 'DD/MM/yyyy') >= (SELECT TO_DATE(max(D_DTM),'DD/MM/YYYY') FROM DMSN.DS3R_FH_1XRTT_FA_LVL_KPI)-2
    GROUP BY
    d_dtm,
    BTS_ID
    having
    CASE WHEN D_DTM = (D_DTM-24/24)
    THEN sum(V_ATT_CNT)
    END > 0
    But it is not returning any results because of the "having" clause. I know it should return results because all I want it to do is in one column have the V_ATT for the current time period, and in the 2nd column, have the V_ATT 24 hours ago. I've checked the data and I should get results back but can't seem to figure out why this is not working...
    Edited by: k1ng87 on Apr 22, 2013 1:03 PM

    Hi,
    k1ng87 wrote:
    I have the following query:
    SELECT
    d_dtm,
    BTS_ID,
    CASE WHEN D_DTM = (D_DTM-24/24)
    THEN sum(V_ATT_CNT)
    END AS "LASTATT",
    ...You may have noticed that this site normally doesn't display multiple spaces in a row.
    Whenever you post formatted text (including, but not limited to, code) on this site, type these 6 characters:
    \(small letters only, inside curly brackets) before and after each section of formatted text, to preserve spacing.
    That's just one of many useful things found in the forum FAQ {message:id=9360002}  
    But it is not returning any results because of the "having" clause. You're right:HAVING CASE
         WHEN d_dtm = (d_dtm - 24/24)
         THEN SUM (v_att_cnt)
         END > 0
    Whatever d_dtm is, it's not d_dtm - 24/24, so the WHEN condition will never be TRUE.  That means the CASE expression will always return NULL, and NULL is not greater than 0, so the HAVING condition will never be TRUE.
    k1ng87 wrote:
    confused on what I'm missing here...I'm using version 11g, not sure if that matters for this ? though....There is no version 11f or 11h, so it's kind of silly to say you're using 11g.  Why not give your actual version number, like 11.2.0.2.0?  Sometimes, the part after 11 makes a huge difference.
    But probably not in this case, as you said.   What's more important is for you to post CREATE TABLE and INSERT statements for a little sample data, and the results you want from that sample data.
    No kidding; see the forum FAQ {message:id=9360002}.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • Flash Builder 4.5 Data Services Wizard, setting up REST service call returns Internal Error Occurred

    Dear all -
    I am writing with the confidence that someone will be able to assist me.
    I am using the Flash Builder Data Services Wizard to access a Server that utilizes REST type calls and returns JSON objects. The server is a JETTY server and it apparantly already works and is returning JSON objects (see below for example). It is both HTTP and HTTPS enabled, and right now it has a cross-domain policy file that is wide open (insecure but its not a production server, it's internal).
    The crossdomain file looks like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
    <cross-domain-policy>
       <allow-http-request-headers-from domain="*" headers="*" secure="false"   />
       <allow-access-from domain="*" to-ports="*" secure="false"/>
       <site-control permitted-cross-domain-policies="master-only" />
    </cross-domain-policy>
    The crossdomain file is in the jetty server's root directory and is browseable via HTTP and HTTPS (i.e. browsing to it returns the xml)
    Now before all of you say that using wizards sucks (generally) I thought I would utilize the FB Data Services Wizard as at least it would provide a template for which I could build additional code against, or replace and improve the code it produces.
    With that in mind, I browse to the URL of the Jetty Server with any web browser (for example, Google Chrome, Firefox or IE) with a URL like this (the URL is a little confidential at the moment, but the structure is the same)
    https://localhost:somePort/someKey/someUser/somePassword/someTask
    *somePort is the SSL port like 8443
    *someKey is a key to access the URL's set of services
    returns a JSON object as a string in the web browser and it appears like the following:
    {"result":success,"value":"whatEverTheValueShould"}
    Looks like the JSON string/object is valid.
    I went through the Flash Builder Data Services Wizard to set up HTTP access to this server. The information that I filled in is described below:
    Do you want to use a Base URL as a prefix for all operation URLs?
    YES
    Base URL:
    https://localhost:8443/someKey/
    Name                    : someTask
    Method                    : POST
    Content-Type: application/x-www-form-urlencoded
    URL                              : {someUser}/{somePassword}/someTask
    Service Name: SampleRestapi
    Services Package: services.SampleRestapi
    datatype objects: valueObjects:
    Completing the wizard, I run the Test Operation command. Remember, no authentication is needed to get a JSON string.
    It returns:
    InvocationTargetException: Unable to connect to the URL specified
    I am thinking - okay, but the URL IS browseable (as I originally was able to browse to it, as noted above).
    I continue to test the service by creating a Flex application that accepts a username and password in a form. when the form is submitted, the call to the service is invoked and an event handler returns the result. The code is below (with some minor changes to mask the actual source).
    <?xml version="1.0" encoding="utf-8"?>
    <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                                     xmlns:s="library://ns.adobe.com/flex/spark"
                                     xmlns:mx="library://ns.adobe.com/flex/mx"
                                     xmlns:SampleRestapi="services.SampleRestapi.*"
                                     minWidth="955" minHeight="600">
              <fx:Script>
                        <![CDATA[
                                  import mx.controls.Alert;
                                  import mx.rpc.events.ResultEvent;
                                  protected function button_clickHandler(event:MouseEvent):void
                                            isUserValidResult.token = SampleRestAPI.isUserValid(userNameTextInput.text,passwordTextInput.text);
                                  protected function SampleRestAPI_resultHandler(event:ResultEvent):void
                                            // TODO Auto-generated method stub
                                            // print out the results
                                            txtAreaResults.text = event.result.message as String;
                                            // txtAreaResults.appendText( "headers \n" + event.headers.toString() );
                        ]]>
              </fx:Script>
              <fx:Declarations>
                        <SampleRestapi:SampleRestAPI id="SampleRestAPI"
                                                                                                 fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
                                                                                                 result="SampleRestAPI_resultHandler(event)"
                                                                                                 showBusyCursor="true"/>
                        <s:CallResponder id="isUserValidResult"/>
                        <!-- Place non-visual elements (e.g., services, value objects) here -->
              </fx:Declarations>
              <s:Form defaultButton="{button}">
                        <s:FormItem label="UserName">
                                  <s:TextInput id="userNameTextInput" text="q"/>
                        </s:FormItem>
                        <s:FormItem label="Password">
                                  <s:TextInput id="passwordTextInput" text="q"/>
                        </s:FormItem>
                        <s:Button id="button" label="IsUserValid" click="button_clickHandler(event)"/>
                        <s:FormItem  label="results:">
                                  <s:TextArea id="txtAreaResults"/>
                        </s:FormItem>
              </s:Form>
    </s:Application>
    It's a simple application to be sure. When I run it , I get the following returned in the text area field txtAreaResults:
    An Internal Error Occured.
    Which is equivalent to the following JSON string being returned:
    {"success":false,"value":"An Internal Error Occured"}
    It appears that the call is being made, and that a JSON object is being returned... however it does not return the expected results?
    Again the URL constructed is the same:
    https://www.somedomain.com:somePort/someKey/someUser/somePassword/someTask
    So I am wondering what the issue could be:
    1) is it the fact that I am browsing the test application from an insecure (http://) web page containing the Flex application and it is accessing a service through https:// ?
    2) is the JSON string structurally correct? (it appears so).
    3) There is a certificate enabled for HTTPs. it does not match the test site I am using ( the cert is for www.somedomain.com but I am using localhost for testing). Would that be an issue? Google Chrome and IE just asks me to proceed anyway, which I say "yes".
    Any help or assistance on this would be appreciated.
    thanks
    Edward

    Hello everyone -
    Since I last posted an interesting update happened. I tested my  Flex application again, it is calling a Jetty Server that returns a JSON object, in different BROWSERS.  I disabled HTTPS for now, and the crossdomain.xml policy file is wide open for testing (ie. allowing every request to return data). So the app accessing the data using HTTP only. Browsers  -  IE, Opera, Firefox and Chrome. Each browser contained the SAME application, revision of the Flash Player (10.3.183.10 debugger for firefox, chrome, opera, safari PC; 11.0.1.129 consumer version in IE9,) take a look at the screen shot (safari not shown although the result was the same as IE and chrome)
    Note that Opera and Firefox returned successful values (i.e. successful JSON objects) using the same code generated from the Data Services Wizard. Chrome, IE and, Safari failed with an Internal error. So I am left wondering - WHY? Is it something with the Flash Player? the Browsers?  the Flex SDK? Any thoughts are appreciated. Again, the code is found in the original thread above.

  • Table-Valued Function not returning any results

    ALTER FUNCTION [dbo].[fGetVendorInfo]
    @VendorAddr char(30),
    @RemitAddr char(100),
    @PmntAddr char(100)
    RETURNS
    @VendorInfo TABLE
    vengroup char(25),
    vendnum char(9),
    remit char(10),
    payment char(10)
    AS
    BEGIN
    insert into @VendorInfo (vengroup,vendnum)
    select ks183, ks178
    from hsi.keysetdata115
    where ks184 like ltrim(@VendorAddr) + '%'
    update @VendorInfo
    set remit = r.remit
    from
    @VendorInfo ven
    INNER JOIN
    (Select ksd.ks188 as remit, ksd.ks183 as vengroup, ksd.ks178 as vendnum
    from hsi.keysetdata117 ksd
    inner join @VendorInfo ven
    on ven.vengroup = ksd.ks183 and ven.vendnum = ksd.ks178
    where ksd.ks192 like ltrim(@RemitAddr) + '%'
    and ks189 = 'R') r
    on ven.vengroup = r.vengroup and ven.vendnum = r.vendnum
    update @VendorInfo
    set payment = p.payment
    from
    @VendorInfo ven
    INNER JOIN
    (Select ksd.ks188 as payment, ksd.ks183 as vengroup, ksd.ks178 as vendnum
    from hsi.keysetdata117 ksd
    inner join @VendorInfo ven
    on ven.vengroup = ksd.ks183 and ven.vendnum = ksd.ks178
    where ksd.ks192 like ltrim(@PmntAddr) + '%'
    and ks189 = 'P') p
    on ven.vengroup = p.vengroup and ven.vendnum = p.vendnum
    RETURN
    END
    GO
    Hi all,
    I'm having an issue where my Table-Valued Function is not returning any results.
    When I break it out into a select statement (creating a table, and replacing the passed in parameters with the actual values) it works fine, but with passing in the same exact values (copy and pasted them) it just retuns an empty table.
    The odd thing is I could have SWORN this worked on Friday, but not 100% sure.
    The attached code is my function.
    Here is how I'm calling it:
    SELECT * from dbo.fGetVendorInfo('AUDIO DIGEST', '123 SESAME ST', 'TOP OF OAK MOUNTAIN')
    I tried removing the "+ '%'" and passing it in, but it doesn't work.
    Like I said if I break it out and run it as T-SQL, it works just fine.
    Any assistance would be appreciated.

    Why did you use a proprietary user function instead of a VIEW?  I know the answer is that your mindset does not use sets. You want procedural code. In fact, I see you use an “f-” prefix to mimic the old FORTRAN II convention for in-line functions! 
    Did you know that the old Sybase UPDATE.. FROM.. syntax does not work? It gives the wrong answers! Google it. 
    Your data element names make no sense. What is “KSD.ks188”?? Well, it is a “payment_<something>”, “KSD.ks183” is “vendor_group” and “KSD.ks178” is “vendor_nbr” in your magical world where names mean different things from table to table! 
    An SQL programmer might have a VIEW with the information, something like:
    CREATE VIEW Vendor_Addresses
    AS
    SELECT vendor_group, vendor_nbr, vendor_addr, remit_addr, pmnt_addr
      FROM ..
     WHERE ..;
    --CELKO-- Books in Celko Series for Morgan-Kaufmann Publishing: Analytics and OLAP in SQL / Data and Databases: Concepts in Practice Data / Measurements and Standards in SQL SQL for Smarties / SQL Programming Style / SQL Puzzles and Answers / Thinking
    in Sets / Trees and Hierarchies in SQL

  • Problem returning same rows multiple times

    Hi there. I have three tables called GP_T, LDMK_T, and FP_T.
    GP_T is a spatial table and has the following attributes:
    Location | Land - where location is of type sdo_geometry
    LDMK_T has the following attributes:
    Land | CFCC
    FP_T has the following attributes:
    Land | CFCC | Score
    Each land is assoicated with only one location. As can be seen the attribute "Land" is common to all three tables and uniquely identifies the objects that I am trying to access. "CFCC" is common to LDMK_T and FP_T and each unique object has an associated "CFCC" where more than one object can have the same "CFCC". Essentially what I am trying to do is return all distinct "lands" based on a "CFCC" value and where the objects' score > 20.
    My select statement looks as follows:
    select a1.land, a1.location from GP_T a1, LDMK_T a2, FP_T a3
    where a1.land = a2.land and a1.land = a3.land and a2.cfcc = a3.cfcc
    and a2.cfcc = 'D43' and a3.feature_score > 20;
    However, this query returns certain objects multiple (2 or more) times. When I run this second query it appears to return the correct number of values but without the "Location" attribute:
    select distinct (a1.land) from GP_T a1, LDMK_T a2, FP_T a3
    where a1.land = a2.land and a1.land = a3.land and a2.cfcc = a3.cfcc
    and a2.cfcc = 'D43' and a3.feature_score > 20;
    I cannot use "select distinct a1.land, a1.location...." as it throws up the following error:
    ORA-22901: cannot compare nested table or VARRAY or LOB attributes of an object type
    Is it a question of using GROUP_BY or can anybody else see anything wrong with the way I set up the initial query. Any help would be greatly appreciated. Joe

    Hi there. Thanks a lot for your response. I tried removing the second table completely from the query as you suggested, seeming as it appears redundant, but the query still retrieves certain rows multiple times. In fact the query that you suggested actually returns the exact same results as my initial query so at least some progress has been made. However, I really have no idea how to remove duplicates without using the "DISTINCT" option. Has anybody else got any further suggestions? Any help would be great. Thanks, Joe

  • Re: ResultSet not returning same data

    Thanks to all who offered thoughts / advice on my post yesterday. For those interested here is what I found.
    The Problem -
    String data stored in MSSQL7 DB, transferred to MySQL4 DB, then pulled for an application did not match. Tests proved that the data IN the DB matched.
    What I found -
    Strings that were using unique chars such as French and German accent chars were NOT being returned correctly. It seems that when I call
    ResultSet.getString() using my SQL7 DB driver I would get a different result than when calling the same method in my MySQL4 Driver.
    To fix the problem I had to use
      String myString = new String(
                          ResultSet.getBytes()
                        );It seems that the DB driver was "assuming" what I wanted when using getString().
    Further tests proved that...
    MySQL DB Driver
    getString() == new String(getBytes()) true
    SQL7 Driver
    getString() == new String(getBytes()) false
    Just in case anyone was interested.
    Thanks for listening.
    ST

    In MySQL you can configure the charset used by the database. The default is "latin1", and if you have the correct data in your program, you can just use getString() and setString(). That setup handles strings with French and German accented characters, I know that because I have a program that does it.
    Perhaps your MS SQL configuration isn't working right? I don't have any experience on how to set that up.

  • Step into method- call the same method (bermuda triangle)

    I don't know why but I have:
    step into method1-> call the same method1->step into method1-> call the same method1->step into method1-> call the same method1 and so on.
    Off course, the result is error "stack over flow".
    public Object getObject(Object o, String msg) {
              Object object = null;
              if (o instanceof Center) {
                   object = this.getObject((Center) o, msg);
              if (o instanceof Student) {
                   object = this.getObject((Student) o, msg);
              if (o instanceof Curriculumn) {
                   object = this.getObject((Curriculumn) o, msg);
              if (o instanceof Course) {
                      System.out.println("YAHOO!");
                object = this.getObject((Course) o, msg);
                   System.out.println("google");                                // no google
              return object;
    public Object getObject(Curriculumn curriculumn, String msg) {
              Object object = null;
              if(msg.equals("Author")) {
                   String s = new String();
                   curriculumn.setAuthor(s);
                   return s;
              if(msg.equals("CurriculumTitle")) {
                   String s = new String();
                   curriculumn.setTitle(s);
                   return s;
              if(msg.equals("RevisionDate")) {
                   String s = new String();
                   curriculumn.setRevisionDate(this.stringToCalendar(s));
                   return s;
              if(msg.equals("id")) {
                   String s = new String();
                   s ="0";                                     //dfsfsdfsd_____________0
                   curriculumn.setId(Integer.parseInt(s));
                   return s;
              if(msg.equals("Course")) {
                   Course course = new Course();
                   curriculumn.addCourse(course);
                   return course;
              return object;
         public Object getObjest(Course course, String msg) {
              Object object = null;
              if(msg.equals("RevisionDate")) {
                   String s = new String();
                   course.setRevisionDate(this.stringToCalendar(s));
                   return s;
              if(msg.equals("Author")) {
                   String s = new String();
                   course.setAuthor(s);
                   return s;
              if(msg.equals("Task")) {
                   Task task = new Task();
                   course.addTask(task);
                   return task;
              if(msg.equals("id")) {
                   String s = new String();
                   s = "0";                             //dfsdfffffffff______________________--3
                   course.setId(Integer.parseInt(s));
                   System.out.println("MESSAGE in id COurse"); ///9009090909
                   return s;
         if(object==null) System.out.println("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");     
         return object;
         } The problem is that getObject((Curriculumn curriculumn,...) works well, but getObject((Course course, ) not.
    The out put is
    Yahoo
    Yahoo
    Yahoo
    and so on... it does not print google

    You forgot to use the @Overload
    annotation.
    Err.. @Override ?Won't work here :):-( Obviously I'm missing the point!There isn't one :)

Maybe you are looking for