Can't execute SQL Named query that uses connect by...

I'm having problems using the connect by with ReportQuery.setHierarchicalQueryClause (detailed in earlier post) so I defined a named query to execute the following sql;
select distinct(role_id)
from role_principal
connect by prior role_id = principal_id
start with principal_id = #principalId
When I run similar SQL in SqlPlus, i get results like this;
ROLE_ID
202
500
501
502
503
But when I run the query using Toplink like this;
Vector args = new Vector();
args.add(principal.getId());
roles = (Vector) session.executeQuery("orclGetRolesOfPrincipal", args);
I get this exception;
TopLink Warning]: 2005.10.05 10:58:14.362--ClientSession(18082301)--Thread(Thread[main,5,main])--Local Exception Stack:
Exception [TOPLINK-6044] (Oracle TopLink - 10g Developer Preview 3 (10.1.3.0 ) (Build 041116)): oracle.toplink.exceptions.QueryException
Exception Description: The primary key read from the row [DatabaseRecord(
     ROLE_PRINCIPAL.ROLE_ID => 202)] during the execution of the query was detected to be null. Primary keys must not contain null.
Query: ReadAllQuery(oracle.xdo.server.security.authorization.model.RolePrincipalRelation)
     at oracle.toplink.exceptions.QueryException.nullPrimaryKeyInBuildingObject(QueryException.java:662)
     at oracle.toplink.internal.descriptors.ObjectBuilder.buildObject(ObjectBuilder.java:349)
     at oracle.toplink.internal.descriptors.ObjectBuilder.buildObjectsInto(ObjectBuilder.java:633)
     at oracle.toplink.internal.queryframework.DatabaseQueryMechanism.buildObjectsFromRows(DatabaseQueryMechanism.java:141)
     at oracle.toplink.queryframework.ReadAllQuery.executeObjectLevelReadQuery(ReadAllQuery.java:440)
     at oracle.toplink.queryframework.ObjectLevelReadQuery.executeDatabaseQuery(ObjectLevelReadQuery.java:727)
     at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:559)
     at oracle.toplink.queryframework.ReadAllQuery.execute(ReadAllQuery.java:408)
     at oracle.toplink.publicinterface.Session.internalExecuteQuery(Session.java:1977)
     at oracle.toplink.publicinterface.Session.executeQuery(Session.java:973)
     at oracle.toplink.publicinterface.Session.executeQuery(Session.java:945)
     at oracle.xdo.server.dataservices.impl.toplink.TLDataAccessManagerImpl.getObjects(TLDataAccessManagerImpl.java:346)
It seems to have a problem that there's not a parent record for role_id 202, which is a root level record and so should not have a parent.
I appreciate any help that can be provided.
Thanks,
-Tim Watson

Hello Tim,
Not sure of the problem in the first post, but in this one, you are executing the query as a ReadAllQuery. The results only contain the role_id, but TopLink expecting atleast all the primary key fields inorder to build the objects to return them to you. Try executing this SQL in a report query instead, or set the results to return all the fields so TopLink can build the objects.
Best Regards,
Chris

Similar Messages

  • Can I rewrite the following query without using Row_number() function ??!!

    Hello every one, can I rewrite the following query without using the 'ROW_NUMBER() OVER ' part.
    The query is supposed to pull out the records whose CODE is not NULL and has most
    recent date for UPDATE_DATE . The reason I wanted to do this is, When I embed this query
    in between many other queries along with JOINs, My oracle server is unable to execute. So, I thought
    its better to supplant 'ROW_NUMBER() OVER ' logic with something else and try it. .
    SELECT a.* FROM
    (SELECT b.*, ROW_NUMBER() OVER (PARTITION BY b.PIDM
    ORDER BY b.UPDATE_DATE DESC) AS Rno
    FROM
    SELECT *
    FROM SHYNCRO WHERE CODE IS NOT NULL
    )b
    )a
    WHERE a.Rno = 1

    Hi,
    You didn't write over 150 lines of code and then start testing it, did you?
    Don't.
    Take baby steps. Write as little as pssiblem test that. Debug and test again until you have something that does exactly what you want it to do.
    When you have somehting that works perfectly, take one baby step. Add a tiny amount of code, maybe 1 or 2 lines more, and test again.
    When you do get an error, or wrong results, you'll have a much better idea of where the problem is. also, you won't be building code on a flimsy foundation.
    If you need help, post the last working version and the new version with the error. Explain what you're trying to do in the new version.
    The error message indicates line 133. It looks like line 133 of your code is blank. Does your front end allow completely blank lines in the middle of a query? SQL*Plus doesn't by default; you have to say
    SET  SQLBLANKLINES  ONto have a completely blank line in SQL*Plus. (However, lines containing nothing but at commnet are always allowed.)
    You may have noticed that this site normally doesn't display multiple spaces in a row.
    Whenever you post formatted text (such as indented 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.
    The 4 people who posted small code fragments for you to read all did this.  It would be so much easier for people to read your humongeous query if it were formatted.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

  • How can i know if my query is using the index ?

    Hello...
    How can i know if my query is using the index of the table or not?
    im using set autotrace on...but is there another way to do it?
    thanks!
    Alessandro Falanque.

    Hi,
    You can use Explain Plan for checking that your query is using proper index or not. First you need to check that Plan_table is installed in your database or not. If it is not there THEN THE SCRIPT WILL BE LIKE THIS:
    CREATE TABLE PLAN_TABLE (
    STATEMENT_ID VARCHAR2 (30),
    TIMESTAMP DATE,
    REMARKS VARCHAR2 (80),
    OPERATION VARCHAR2 (30),
    OPTIONS VARCHAR2 (30),
    OBJECT_NODE VARCHAR2 (128),
    OBJECT_OWNER VARCHAR2 (30),
    OBJECT_NAME VARCHAR2 (30),
    OBJECT_INSTANCE NUMBER,
    OBJECT_TYPE VARCHAR2 (30),
    OPTIMIZER VARCHAR2 (255),
    SEARCH_COLUMNS NUMBER,
    ID NUMBER,
    PARENT_ID NUMBER,
    POSITION NUMBER,
    COST NUMBER,
    CARDINALITY NUMBER,
    BYTES NUMBER,
    OTHER_TAG VARCHAR2 (255),
    PARTITION_START VARCHAR2 (255),
    PARTITION_STOP VARCHAR2 (255),
    PARTITION_ID NUMBER,
    OTHER LONG,
    DISTRIBUTION VARCHAR2 (30))
    TABLESPACE SYSTEM NOLOGGING
    PCTFREE 10
    PCTUSED 40
    INITRANS 1
    MAXTRANS 255
    STORAGE (
    INITIAL 10240
    NEXT 10240
    PCTINCREASE 50
    MINEXTENTS 1
    MAXEXTENTS 121
    FREELISTS 1 FREELIST GROUPS 1 )
    NOCACHE;
    After that write the following command in the SQL prompt.
    Explain plan for (Select statement);
    Select level, SubStr( lpad(' ',2*(Level-1)) || operation || ' ' ||
    object_name || ' ' || options || ' ' ||
    decode(id, null , ' ', decode(position, null,' ', 'Cost = ' || position) ),1,100)
    || ' ' || nvl(other_tag, ' ') Operation
    from PLAN_TABLE
    start with id = 0
    connect by
    prior id = parent_id;
    This will show how the query is getting executed . What are all the indexes it is using etc.
    Cheers.
    Samujjwal Basu

  • Spatial Query that uses Result of another Spatial Query

    Hi all,
    I am using the SDO_DIFFERENCE Operator to return the difference between a query window and an intersection geometry. This is fine and i get an object back that is cast to a STRUCT using the SDO API. I want then to use this (returned)object in another SQL query that uses the SDO_RELATE Operator. The problem is that i dont know what type it needs to be so that the SDO_RELATE operator will accept it as a valid argument. Has anyone done this before or seen anything like it? Any help will be very much appreciated.
    Keith.

    Thanks for your help,
    I have done the following steps, but i still dont understand why it doesnt work.
    CREATE TABLE val_results (sdo_rowid ROWID, result varchar2(1000));
    CALL SDO_GEOM.VALIDATE_LAYER_WITH_CONTEXT('SHAPES','SHAPE','VAL_RESULTS');
    SELECT * FROM val_results;
    1 null     Rows Processed <3>
    2 AAARDDAAEAAAAA+AAA     13348 [Element <1>] [Ring <1>]
    3 AAARDDAAEAAAAA+AAB     13367 [Element <1>] [Ring <1>]
    SELECT shape_id,SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(c.shape, 0.005)
    FROM shapes c;
    3     TRUE
    2     13348 [Element <1>] [Ring <1>]
    1     13367 [Element <1>] [Ring <1>]
    If my rectangle and polygon is still invalid, can someone tell me why they are invalid. And how can i make them valid?
    Thanks.
    UPDATE:
    I have solved Polygon issue.
    In Spatial Developer's Guide it says:
    Simple polygon whose vertices are connected by straight line
    segments. You must specify a point for each vertex; and the
    last point specified must be exactly the same point as the first
    (within the tolerance value), to close the polygon. For
    example, for a 4-sided polygon, specify 5 points, with point 5
    the same as point 1.
    I have added a point to polygon which is same as first point. Now, it can find the point in polygon.
    INSERT INTO shapes VALUES (4, 'Polygon', SDO_GEOMETRY(2003, NULL, NULL, SDO_ELEM_INFO_ARRAY(1,1003,1), SDO_ORDINATE_ARRAY(306,193,130,441,489,653,88,183,442,354,306,193)));
    But, when i run this query again:
    SELECT shape_id,SDO_GEOM.VALIDATE_GEOMETRY_WITH_CONTEXT(c.shape, 0.005) FROM shapes c;
    4     13349 [Element <1>] [Ring <1>][Edge <4>][Edge <1>]
    3     TRUE
    2     13348 [Element <1>] [Ring <1>]
    1     13367 [Element <1>] [Ring <1>]
    it doesn't say TRUE like it did for Circle ??
    Edited by: WhiteScars on Jan 4, 2010 12:45 AM

  • Can we create the Purchase order that using P&L account or just using account do not use cost center.

    Dear Experts,
    Could you please advise :
    1) Can we create the purchase order that using profit and loss account ? ( if yes , which kind of account assignment category we should use ?)
    2) How to create a purchase order for service charge .( just using GL account )
    Thanks & Best Regards,
    Watson

    Hi,
       May I know why you do not use cost center for consumption?
       You may create a new account assignment category in OME9 by copying K and maintain the cost center as optional. Please note that you have to maintain the item category blank and the account assignment category combination in OMG0. Now, you can use a GL account in PO which doesnt require a cost center assignment (in OBC4 against the field status group of the GL)
       You may use the same account assignment category created in the previous step with item category D, after you maintain the combination of the account assignment with item category D in OMG0.
        Please test the scenario and revert back.
    Regards,
    AKPT

  • Can u write the following query without using group by clause

    select sp.sid, p.pid, p.name from product p, supp_prod sp
    where sp.pid= p.pid and
    sp.sid = ( select sid from supp_prod group by sid
    having count(*) =(select count(*) from product));
    thru this, we retrieving all the products delivered by the supplier.
    Can you write the following query without using the group by clause

      select sp.sid, p.pid, p.name
        from product p, supp_prod sp
       where sp.pid= p.pid the above query will still retrieve all the products supplied by the supplier. sub-query is not necessary.
    maybe if you can post some sample data and output will help us understand what you want to achieve.

  • How Can I Execute Sql Query in Managed bean?

    Hi,
    I want to execute sql query in managedbean and get the query result. How can I do?
    Best wishes!

    You can do this by having current Database connection your application is using like this
    public static synchronized DBTransaction getDBTransaction(){
    FacesContext ctx = FacesContext.getCurrentInstance();
    ValueBinding vb = ctx.getApplication().createValueBinding("#{data}");
    BindingContext bc = (BindingContext)vb.getValue(ctx.getCurrentInstance());
    DataControl dc = bc.findDataControl("AppModuleDataControl");
    ApplicationModuleImpl am = ((ApplicationModuleImpl)(ApplicationModule)dc.getDataProvider());
    return am.getDBTransaction();
    and then user DBTransaction object to create Statement and PreparedStatement you can find those in java doc.

  • How to pass a parameter into execute sql task and later use it into dataflow task?

    i am in a situation, where i have a logging table in which i have a primary key called ETL_log_ID which is an identity column and acts as a foreign key for various fact table and dimension tables which are populated using SSIS packages. Now i wanna use the
    ETL_log_ID as a parameter in the execute sql task which populates the log table and pass the same value in the data flow task which populates the facts and dimension. Can you let me know how to pass the parameter in a step by step procedure.
    Thanks,
    Nikhil
      

    Nikhil,
    You can check the following :
    http://www.programmersedge.com/post/2013/03/05/ssis-execute-sql-task-mapping-parameters-and-result-sets.aspx
    http://stackoverflow.com/questions/7610491/how-to-pass-variable-as-a-parameter-in-execute-sql-task-ssis
    Regarding the usage in Dataflow task, Can you elaborate on that a little?
    Thanks,
    Jay
    <If the post was helpful mark as 'Helpful' and if the post answered your query, mark as 'Answered'>

  • How to execute SQL queris in BPEL using JDeveloper?????..Please suggest

    Hi,
    I am very new to JDeveloper. Curently i am tryin to execute an SQL query from the BPEL process, there is an query in the source field and the output of the query is to be mapped to a variable field in the target xsd file. the query is fairly simple, like
    SELECT emp
    FROM emp_table
    WHERE emp_id=123
    The target field, namely "employee", is an element from the xsd file. I tried using Java embedding activity to connect to the db and execute the query through a piece of Java code, but couldn't find a way to assign the output of the query to the associated target field. however lately i also discovered the Database Adapter services which helps me to create a database connection, but still i am not sure as of how to handle and map the output of the query to the variable field. Is there any other way to execute database queries in Jdeveloper using BPEL process????????? Please suggest.
    Can somebody please help me in resolving the issue either through Java Embed activity or Database Adapter services??
    Thanks in advance
    Prabha

    http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28994/adptr_db.htm
    maybe this one is helpful for you.
    best is to use the db adapter for this.
    if you just execute it you will see the format of the output in your audittrial (so some kind of list of employees). In bpel when you doubleclick the invoke-activity you will see the outputvariable.
    With use of xpath you coud loop over this 'list' (collection/array/etc) of employees and do with it whatever you want.
    Too see how you need to loop over the array you could check this :
    http://clemensblog.blogspot.com/2006/03/bpel-looping-over-arrays-collections.html

  • How to execute SQL through OEM GC, using different OS user?

    Hi all,
    I have a relatively simple issue, and I'm hoping there's a simple fix. This is all being done on ONE server - so on this server, I have OEM 11.1.0.1.0, the agent, and several 11.2 databases running. The OEM install is owned by the "oem" OS user, while the databases I'm connecting to are owned by a different OS user "oracle". All normal OEM GC operations are working great, just this one issue I am having.
    Through OEM, I am trying to go in and execute some simple SQL statements against a database. When I do this, I am selecting to "Override Preferred Credentials", and I'm putting in the host and database username/pwds. It all works fine, but only if I specify the OS user that owns the OEM install (oem). If I try to put in the OS user that owns the actual Oracle database install (oracle), then it is failing. It is not giving me any error messages, just a red X under "Execution Status", and when I click on it, it just says "(No results available)". Again, when I change the query so that the host credentials are the "oem" user, then it runs fine.
    I am not sure what I need to do, so that it can run the query, but use a different host login? Any thoughts/ideas?
    Thanks!!
    --Brad                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

    It may be that when Grid logs in using the preferred credentials you've specified that the environment is not being set properly. When you log in interactively as this other user (the owner of the Oracle RDBMS binaries) do you need to manually set environment variables such as ORACLE_HOME or PATH in order to run sqlplus ? Or are they set in the user's .profile? I am assuming that this is a Linux / UNIX system and not Windows.

  • How to execute SQL Quiries in BPEL using JDeveloper

    Hi All,
    I am very new user of Oracle JDeveloper and BPEL. I am trying to develop a process flow in JDeveloper using BPEL and get stuck when I was trying to execute a SQL quiry in the flow.
    How to execute SQL quiries using JDeveloper and BPEL?????????????
    Possibilities might be..
    1.Configring Database Adapter
    2.Using Java Embedded activities of BPEL
    However, any of the above mentioned way is not clear with me how to implement it to get the query run in the process flow.
    It will be great if anyone could hepl me with this concept....
    Thanks in advance
    -Prabha

    ... or perhaps just scan the last 5 posts before you post a new thread, in which case, you'd discover that someone else already asked Help needed in executing SQL query... and got the same answer

  • SQL Timestamp query for use with PointBase

    I know this isn't an SQL forum, but I was wondering if someone could help me define an SQL query that returns rows from a table in a PointBase database with 2 separate TIMESTAMP fields. What I would like to do is return all rows where timefield1 is less than 2 hours later than timefield2.
    I've tried things like:
    select * from timetable where timefield1 < timefield2 + 2;
    select * from timetable where timefield1 < timefield2 + time '02:00:00';
    But haven't had any luck so far. Thanks in advance for any help you can give!

    usually SQL has a function called DATEADD where you take a timestamp, the amount to add and what to add it to.
    So you would have
    Select * from timetable where timefield1 < DATEADD(timefield2, 2, hours);
    Not exactly that since I don't know PointBase so check its documentation fro such a command and then do you SQL using it.

  • Please Suggest...How to execute SQL quiries in JDeveloper using BPEL????

    Hi All,
    I am very new user of Oracle JDeveloper and BPEL. I am trying to develop a process flow in JDeveloper using BPEL and get stuck when I was trying to execute a SQL quiry in the flow.
    How to execute SQL quiries using JDeveloper and BPEL?????????????
    Possibilities might be..
    1.Configring Database Adapter
    2.Using Java Embedded activities of BPEL
    However, any of the above mentioned way is not clear with me how to implement it to get the query run in the process flow.
    It will be great if anyone could help me with this concept....
    Thanks in advance
    -Prabha
    Edited by: user10259700 on Sep 15, 2008 3:48 AM

    Hi,
    though BPEL has its development environment in JDeveloper, it has its own forum
    BPEL
    Frank

  • How can i replace an apple id that uses a gmail account with my icloud address?

    Greetings,
    I have an Apple ID that uses a gmail address, which i used to create an iCloud email account. However, I cannot seem to replace my gmail Apple ID with the iCloud address. Is it possible to separate the iCloud email from the gmail address, and make it my only Apple ID i.e. can i scrap the gmail ID and only use my iCloud username as my ID?
    Kim

    I'm afraid you can't do this. You can change the ID to another non-Apple address, but you can't make your @icloud.com address the ID.

  • Can you share photos between machines that use the same wifi network? Thanks for your help.

    Can you share photos on i-photo between machines that use the same network or even between different accounts on the same machine? I know you can share music on i-tunes but can you do the same on i-photo? Thanks for your help.

    Yes.
    If you want the other user to be able to see the pics, but not add to, change or alter your library, then enable Sharing in your iPhoto (Preferences -> Sharing), leave iPhoto running and use Fast User Switching to open the other account. In that account, enable 'Look For Shared Libraries'. Your Library will appear in the other source pane.
    Any user can drag a pic from the Shared Library to their own in the iPhoto Window.
    Remember iPhoto must be running in both accounts for this to work.
    You can figure out using it with another machine from that too

Maybe you are looking for

  • Is there any way that I can share an in-app purchase over multiple devices even if they are under the same iTunes account?

    So there are several iOS devices in my family and on one of our iPads we have purchased an in-app purchase. I also have the same app on another iPad and would like to also have access to that in-app purchase. Both of these devices are under the same

  • HP Envy lost network adapter

    I think I have accidentally uninstalled the network adapter driver for my laptop. At the moment, it says that there are no network connections, but the internet connection for my phone is just fine. The driver does not seem to be anywhere on my lapto

  • Very stupid claim service policy

    I brought ipad2 for 3 months. And used by usual daily without case or other skin norrmally then have some abrasion. After 4 months my ipad2 have been problem about 3G service as shown no sim. I sent to apple service center but they told me cannot cla

  • Handling carriage returns (enter)

    I have an application with several pages. If the user pushes the carriage return (enter) on many of the pages, the application goes back to the login page rather than activating a button on the page. What is the best way to trap and ignore carriage r

  • Sales order - No Credit block - When credit limit = 0 & Exposure = 0

    Hello, I have a scenario where, i try to create a sales order for 1000 EUR. I have Credit management activated for the concerned BP. In the main segment, the limit defined is = 0 and credit exposure = 0. Now when I try to create a SO, it is not going