Customize queries in toplink

Hi,
I am new to oracle Toplink. I have created objects for few tables in my project. Instead of standard findall, merge queries, I need to write my own query.
Could somebody help me to do this please?

Hi,
You can create Named Queries in Toplink and Define the Query of your requirement.
If you want achieve that using API,below is sample code
SQLCall call = new SQLCall();
call.setSQLString("SELECT * FROM EMPLOYEE where empname=?");
Enumeration employees = getEmployeeHome().findAll(call);
You can define the Named query using the ExpressionBuilder API as given below
ExpressionBuilder exp = new ExpressionBuilder();
ReadAllQuery = new ReadAllQuery();
query.setReferenceClass(Customer.class);
query.setSelectionCriteria(exp.get("city").equal(exp.getParameter("city")));
query.addArgument("city");
// create a query...
event.getSession().getDescriptor(Customer.class).getQueryManager().addQuery("fin
dCustomersInCity", query);
//Add query to Descriptor
descriptor.getQueryManager().addQuery("findCustomersInCity", query);
/* Enumeration findCustomersInCity(String aCity)
Since this finder returns an Enumeration, the type of the query is
ReadAllQuery. The finder is a "NAMED" finder. It's implementation
is a ReadAllQuery that is registered with the QueryManager. */
//1 the query is defined
ReadAllQuery query1 = new ReadAllQuery();
query1.setName("findCustomersInCity");
query1.addArgument("aCity");
query1.setReferenceClass(CustomerBean.class);
//2 an expression is used
ExpressionBuilder builder = new ExpressionBuilder();
query1.setSelectionCriteria
builder.get("city").like(builder.getParameter("aCity";
//3 An option at this point would be to set any desired options on the query,
e.g., queryl.refreshIdentityMapResult();
//4 Finally, the query is registered with the querymanager.
descriptor.getQueryManager().addQuery("findCustomersInCity",query1);
If you want to achieve thru declaratively then follow add the below xml elements to descriptor.xml.For example adding a named query to Dept descriptor in dept.xml
<query type="relational-read-object">
<name>findDeptByName</name>
<parameter-list>
<query-parameter>
<name>name</name>
<type-handle>
<type-name>java.lang.String</type-name>
</type-handle>
</query-parameter>
</parameter-list>
<relational-options>
<format type="expression">
<main-compound-expression type="compound">
<operator-type>AND</operator-type>
<expression-list>
<expression type="basic">
<operator-type>EQUAL</operator-type>
<first-argument type="queryable">
<queryable-argument-element>
<queryable-handle>
<mapping-descriptor-name>testTop.Dept</mapping-descriptor-name>
<queryable-name>dname</queryable-name>
</queryable-handle>
</queryable-argument-element>
</first-argument>
<second-argument type="parm">
<query-parameter-handle>
<class-descriptor-name>testTop.Dept</class-descriptor-name>
<query-signature>findDeptByName(java.lang.String)</query-signature>
<query-parameter-name>name</query-parameter-name>
</query-parameter-handle>
</second-argument>
</expression>
</expression-list>
</main-compound-expression>
</format>
</relational-options>
</query>
You can use JDeveloper to develop the Toplink aplication using Wizards,please refer the below link for more information.
http://download.oracle.com/docs/cd/E15523_01/web.1111/b32441/qryun.htm#CACFBJCI
Regards,
P.Vinay Kumar

Similar Messages

  • Lost Named Queries of TopLink + Information

    Hi everyone!
    We are developing an application web with TopLink technology and I want to known in which situations or operations we can lost the named queries that we made in base of yours experiencies, because we are newer in this technology.
    We will be waiting your response!
    Greetings!

    If you add or remove columns from a table then you should add/or remove attributes from your mapped class and fix anything in the mappings resulting from the change. The mapping editor functionality is intended for a meet in the middle usage. The generation is intended to be done to bootstrap a project or completely re-create a model following major changes to the database schema.
    Doug

  • Named Queries in Toplink

    Help
    This is doing my head in.
    I have created a named query, its simple, it gets an employee from the database with the matching employeeid... the parameter is "id".
    Once I created the named query I dragged the Employee class to the Data Control Palette and it shows my TopLink names query, i selected Return and put it on a page... now how on earth do i get the ID parameter into the named query and get it to display on the screen.
    Please please help its driving me nuts
    Thank you in advanced
    Rory

    thank you SO VERY MUCH.
    I looked everywhere for that tiny thing... I had gotten everything except how to get the parameter into the method.
    Evetually I did an overide on the "initializeMethodParameters" method on the DataAction and set the parameters that way, but this works much better.
    I will make sure i watch the forums closely so i can pass this on.
    Thank you once again
    Rory

  • How to use join queries with toplink

    Hi there
    I'm using toplink within the JDeveloper 10.1.3.3. with great success.
    Now, I need to query multiple tables using a join SQL.
    How do you configure toplink now without creating database views?
    I could not find an easy with within the JDev IDE or from google search.
    Any help please?
    Thanks
    Henkie

    In a TopLink query you can query across any relationship to another object. You can also join or batch read the object's relationship using the ObjectLevelReadQuery and ReadAllQuery API (see TopLink documentation).
    You can also map a class to multiple tables.
    -- James : http://www.eclipselink.org

  • Complex Query in toplink descriptor

    I have a complex query with "Order by" and "Max" aggregation function and I am trying to convert it to a named query. I am using toplink descriptor in Jdeveloper 11G.
    1. Is it possible to write a named query which returns values from more than two different table?
    2. how to specify Max operation in the Toplink descriptor.
    Here is my Query
    select * from table1 t1 ,table2 t2
    where
    t1.id  = t2.id  and
    t1.name ='Name' and
    t1.status<>'DELETE' and
    t2.a_id = (select max(a_id) from table2 t21 where
    t21.a_id = t1.id and
    group by id)

    TopLink supports sub-selects through sub-queries in TopLink Expressions, and through JPQL. I'm not sure on the JDev support though, you may need to use a code customizer or amendment to add the named query.
    James : http://www.eclipselink.org

  • Error while running the sql queries in unix as cron job..

    Hi,
    I've configured some sql queries to run as cronjob from unix,i'm able to excute all the sql queries with out any error,after all the queries are executed,I'm getting the following error message.
    ORA-00600: internal error code, arguments: [4080], [1], [131], [], [], [], [],
    Could any one advise me why this error is being thrown?
    How to avoid this error?
    Thanks,
    Anil

    Are you running these queries through TopLink?
    If so, the error seems to be occurring on the database, when the query is being executed.
    I have never seen that error before. Performing some websearches it seems to be a general database error, potentially something to do with synchronization. Sorry I can't be of more help, perhaps the database forum can provide more insight...

  • Mapping Workbench 9.0.4.5 Queries Tab

    I'm looking for documentation on how I can use this screen (The Queries tab on the Descriptor) to modify Toplink behaviar via the mapping workbench.
    If I were really strong on building Toplink mappings outside of the worbench, this might be obvious. So far, we have stayed within the confines of the mapping workbench.
    Thanks

    Robert,
    The most common usage of this tab is to graphically define named queries. These queries define parameter based queries using TopLink expressions, EJB QL, or SQL.
    http://download-west.oracle.com/docs/cd/B10464_01/web.904/b10316/dscriptr.htm#1041139
    Using this will allow you to minimize the amount of query code you need to write and maintain. This further reduces coupling of the persistence layer from to application and provides better diagnostics on queries. As you mappings change any queries that are broken by changes can be indicated versus having to find the query issue at runtime.
    To execute the queries in see 'Named Queries' at:
    http://download-west.oracle.com/docs/cd/B10464_01/web.904/b10313/queries.htm#1128980
    Doug

  • Persistence-unit-defaults in orm.xml do not impact TopLink Essentials?

    Hi,
    I have configured a default schema in the persistence-unit-defaults section of the orm.xml mapping file:
    <persistence-unit-metadata>
         <persistence-unit-defaults>
              <schema>SCHEMA_NAME</schema>     
         </persistence-unit-defaults>
    </persistence-unit-metadata>
    The queries that TopLink JPA is generating (and logging) do not qualify any table name with the schema as configured above. It seems that the persistence-unit-default settings are ignored by TopLink JPA?
    N.B: TopLink mentions that it is searching for a file named orm.xml and that it found one - so the file should be processed by TopLink. ("Found a default mapping file at ...")
    Any ideas?

    Thank you for mentioning that workaround.
    Regarding to the results of my tests, the persistence-unit-defauls "schema" does not affect sequences? Is this part of the bug and can expected to be fixed or is the schema/owner of sequences outside the JPA spec?
    currently I found no other solution than to specify the default schema in the persistence-unit-defaults in orm.xml AND declarate all sequences used with the fully qualified name, i.e. when switching the schema this would require changing it at multiple points....
    regards,
    hans

  • TopLink ADF binding named query parameterised

    Repost from JDEV forum
    What is the easieast way to execute parameterised named queries using TopLink and ADF databinding?
    Better yet what would be the best practice to combine parametrised named queries with ADF data binding/controls. Data Binding Primer document is geared mostly towards BC rather than TopLink, any similar docs for TopLink that would have detailed "HowTo's" ? Application Developer Guide does not mention binding/controls.
    Thanks.

    The easiest way is to define a query on the model object (e.g. Employee) and then regenerate the toplink deployment descriptor and the datacontrol.
    This should expose the new query to the Datacontrol pallete. You can then use drag and drop to use the new query on the jsp/struts etc.
    If you have a query that takes in arguments, you may want to look at http://www.oracle.com/technology/products/jdev/tips/shmeltzer/setwhereclause/index.html
    Basically it boils down to passing text etc. to the arguments of your query.

  • TopLink ADF binding named query parameterized

    What is the easieast way to execute parameterized named queries using TopLink and ADF databinding? How to pass parameters?

    The easiest way is to define a query on the model object (e.g. Employee) and then regenerate the toplink deployment descriptor and the datacontrol.
    This should expose the new query to the Datacontrol pallete. You can then use drag and drop to use the new query on the jsp/struts etc.
    If you have a query that takes in arguments, you may want to look at http://www.oracle.com/technology/products/jdev/tips/shmeltzer/setwhereclause/index.html
    Basically it boils down to passing text etc. to the arguments of your query.

  • Are queries thread-safe ? (continued)

    Hi
    In a previous thread on this topic, it was said that a query can be reused, and why it was good on performance. But a reusable object is not necessarily thread-safe.
    So I ask again. Are queries thread-safe ?
    What about Expressions ?
    Thanks
    JCG

    Yes, they're thread safe, both expressions and Queries. TopLink makes copies of whatever parts of the Query/Expression are needed to be changes in parallel.
    - Don

  • Help with useing toplink please..

    Hello
    I am writing J2EE apps that will run on a 10g app server. I thought that toplink was what I should be using to do my model layer. But there are several simple things I can't find out how to do. Things like make a LOV, how do I set a where clause and restrict what the end user is looking at?
    Should I be using the ADF stuff instead? I was under the impression TopLink was the future direction at oracle so thats why I picked it. I have worked all the toplink tutorials I found. I can create mappings and all that. Setting it up isn't the problem, using it once I have it set up thats what I need to figure out. Can anyone point me in the direction of some tutorials or examples on how to use toplink? (especially in j2ee apps).
    Thanks
    troy

    Troy,
    TopLink is a core piece of Oracle's enterprise Java strategy. We are dedicated to standardization of ORM persistence through EJB 3.0 and TopLink is our implementation and the basis of Sun's reference implementation. Additionally, the use of TopLink is not mutually exclusive to using ADF. Within ADF you can use a variety of persistence technologies including TopLink.
    Here is a sample workshop on building applications with TopLink in ADF: http://www.oracle.com/technology/obe/obe9051jdev/ide1012/adfworkshop/buildingadfapplicationsworkshop.htm
    In order to filter or restrict results coming back from the database you need to make use of queries. TopLink has 5 query options available:
    1. TopLink's Expression API
    2. EJB QL
    3. Custom SQL
    4. Stored Procedures
    5. Query By Example
    Quick Tour overview: http://www.oracle.com/technology/products/ias/toplink/quicktour904/que01_01.htm
    You can develop your queries directly in the API of your application or you can use the mapping editors (JDeveloper or Workbench) to declaratively construct your queries. I would recommend using the mapping editors and the expression framework. This will allow the tools to assist you as your application evolves. When mappings change you will be notified if they break any of your defined queries.
    In the 10.1.3 documentation you can start learning about queries at:
    http://download-west.oracle.com/otn_hosted_doc/toplink/1013/DP4/_html/persun005.htm#sthref5432
    Cheers,
    Doug

  • Toplink Cache issues in Cluster

    Hi
    Our production environment is have a clustered environment and we have been noticing the following problem. When a user is trying to save a record she repeatedly encounters the "Toplink-5006" exception that I have included below.
    TopLink Error]: 2006.07.19 04:49:23.359--UnitOfWork(115148745)--null--Exception [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object [[email protected]ce459] cannot be updated because it has changed or been deleted since it was last read.
    Class> com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink_CMP_2_0 Primary Key> [1001280937, 0]
    [TopLink Error]: 2006.07.19 04:49:23.359--UnitOfWork(115148745)--null--Exception [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object [[email protected]ce459] cannot be updated because it has changed or been deleted since it was last read.
    Class> com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink_CMP_2_0 Primary Key> [1001280937, 0]
    <Jul 19, 2006 4:49:23 PM PDT> <Error> <EJB> <BEA-010026> <Exception occurred during commit of transaction Name=[EJB com.rhii.mjplus.fo.people.beans.PeopleManagerBean.setPeople(java.util.HashMap,java.lang.String,java.lang.String,java.lang.String,java.util.HashSet,com.rhii.mjplus.common.login.data.UserInfoDO)],Xid=BEA1-795A6481D2E1938A8EAD(115171166),Status=Rolled back. [Reason=Exception [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object [[email protected]ce459] cannot be updated because it has changed or been deleted since it was last read.
    Class> com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink_CMP_2_0 Primary Key> [1001280937, 0]],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds since begin=0,seconds left=60,XAServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrapper.JTSXAResourceImpl]=(state=rolledback,assigned=MS15_mjp),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@6dcf50b),SCInfo[mjp+MS15_mjp]=(state=rolledback),properties=({weblogic.transaction.name=[EJB com.rhii.mjplus.fo.people.beans.PeopleManagerBean.setPeople(java.util.HashMap,java.lang.String,java.lang.String,java.lang.String,java.util.HashSet,com.rhii.mjplus.common.login.data.UserInfoDO)], weblogic.jdbc=t3://10.253.129.56:2323}),OwnerTransactionManager=ServerTM[ServerCoordinatorDescriptor=(CoordinatorURL=MS15_mjp+10.253.129.56:2323+mjp+t3+, XAResources={},NonXAResources={})],CoordinatorURL=MS15_mjp+10.253.129.56:2323+mjp+t3+): Local Exception Stack:
    Exception [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2) (Build 040311)): oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object [[email protected]ce459] cannot be updated because it has changed or been deleted since it was last read.
    Class> com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink_CMP_2_0 Primary Key> [1001280937, 0]
         at oracle.toplink.exceptions.OptimisticLockException.objectChangedSinceLastReadWhenUpdating(Ljava/lang/Object;Loracle/toplink/queryframework/ObjectLevelModifyQuery;)Loracle/toplink/exceptions/OptimisticLockException;(OptimisticLockException.java:109)
    What is puzzling is that the occurance of this nature has increased with user load and the toplink cache does not seem to have been refreshed after it encounters the first Optimistic Lock exception. We have run several test and this is not reproducabile in the DEV environment where we do not have a clustered set. After making a few updates to a record users starts experiencing the problem ... for some this persist for a really long time.
    We do not have Cache synchronization
    Cluster setup is as followes
    There are 4 boxes and each box has one admin and 4 managed servers.
    I have included the toplink-cmp-people.xml ( Thisis the particular entity bean we have a problem with) Our application server is Weblogic and we have Toplink version 9042
    <toplink-ejb-jar>
    <session>
    <name>People</name>
    <project-class>
    com.rhii.mjplus.fo.people.beans.PeopleToplink
    </project-class>
    <login>
    <datasource>MJPool</datasource>
    <non-jts-datasource>MJPool</non-jts-datasource>
    </login>
    <use-remote-relationships>true</use-remote-relationships>
    <customization-class>com.rhii.mjplus.common.TopLinkCustomization
    </customization-class>
    </session>
    </toplink-ejb-jar>
    I would appreciate any kind of feedback
    Thanks
    Lakshmi

    Can you refresh that record using a query before you save it ?
    Hi
    Our production environment is have a clustered
    environment and we have been noticing the following
    problem. When a user is trying to save a record she
    repeatedly encounters the "Toplink-5006" exception
    that I have included below.
    TopLink Error]: 2006.07.19
    04:49:23.359--UnitOfWork(115148745)--null--Exception
    [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2)
    (Build 040311)):
    oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object
    [com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLin
    k_CMP_2_0@6dce459] cannot be updated because it has
    changed or been deleted since it was last read.
    Class>
    com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink
    CMP2_0 Primary Key> [1001280937, 0]
    [TopLink Error]: 2006.07.19
    04:49:23.359--UnitOfWork(115148745)--null--Exception
    [TOPLINK-5006] (TopLink (WLS CMP) - 10g (9.0.4.2)
    (Build 040311)):
    oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object
    [com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLin
    k_CMP_2_0@6dce459] cannot be updated because it has
    changed or been deleted since it was last read.
    Class>
    com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink
    CMP2_0 Primary Key> [1001280937, 0]
    <Jul 19, 2006 4:49:23 PM PDT> <Error> <EJB>
    <BEA-010026> <Exception occurred during commit of
    transaction Name=[EJB
    com.rhii.mjplus.fo.people.beans.PeopleManagerBean.setP
    eople(java.util.HashMap,java.lang.String,java.lang.Str
    ing,java.lang.String,java.util.HashSet,com.rhii.mjplus
    .common.login.data.UserInfoDO)],Xid=BEA1-795A6481D2E19
    38A8EAD(115171166),Status=Rolled back.
    [Reason=Exception [TOPLINK-5006] (TopLink (WLS CMP) -
    10g (9.0.4.2) (Build 040311)):
    oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object
    [com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLin
    k_CMP_2_0@6dce459] cannot be updated because it has
    changed or been deleted since it was last read.
    Class>
    com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink
    CMP2_0 Primary Key> [1001280937,
    0]],numRepliesOwedMe=0,numRepliesOwedOthers=0,seconds
    since begin=0,seconds
    left=60,XAServerResourceInfo[weblogic.jdbc.wrapper.JTS
    XAResourceImpl]=(ServerResourceInfo[weblogic.jdbc.wrap
    per.JTSXAResourceImpl]=(state=rolledback,assigned=MS15
    _mjp),xar=weblogic.jdbc.wrapper.JTSXAResourceImpl@6dcf
    50b),SCInfo[mjp+MS15_mjp]=(state=rolledback),propertie
    s=({weblogic.transaction.name=[EJB
    com.rhii.mjplus.fo.people.beans.PeopleManagerBean.setP
    eople(java.util.HashMap,java.lang.String,java.lang.Str
    ing,java.lang.String,java.util.HashSet,com.rhii.mjplus
    .common.login.data.UserInfoDO)],
    weblogic.jdbc=t3://10.253.129.56:2323}),OwnerTransacti
    onManager=ServerTM[ServerCoordinatorDescriptor=(Coordi
    natorURL=MS15_mjp+10.253.129.56:2323+mjp+t3+,
    XAResources={},NonXAResources={})],CoordinatorURL=MS15
    _mjp+10.253.129.56:2323+mjp+t3+): Local Exception
    Stack:
    Exception [TOPLINK-5006] (TopLink (WLS CMP) - 10g
    (9.0.4.2) (Build 040311)):
    oracle.toplink.exceptions.OptimisticLockException
    Exception Description: The object
    [com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLin
    k_CMP_2_0@6dce459] cannot be updated because it has
    changed or been deleted since it was last read.
    Class>
    com.rhii.mjplus.fo.people.beans.People_z2e2a7__TopLink
    CMP2_0 Primary Key> [1001280937, 0]
    at
    t
    oracle.toplink.exceptions.OptimisticLockException.obje
    ctChangedSinceLastReadWhenUpdating(Ljava/lang/Object;L
    oracle/toplink/queryframework/ObjectLevelModifyQuery;)
    Loracle/toplink/exceptions/OptimisticLockException;(Op
    timisticLockException.java:109)
    What is puzzling is that the occurance of this nature
    has increased with user load and the toplink cache
    does not seem to have been refreshed after it
    encounters the first Optimistic Lock exception. We
    have run several test and this is not reproducabile
    in the DEV environment where we do not have a
    clustered set. After making a few updates to a record
    users starts experiencing the problem ... for some
    this persist for a really long time.
    We do not have Cache synchronization
    Cluster setup is as followes
    There are 4 boxes and each box has one admin and 4
    managed servers.
    I have included the toplink-cmp-people.xml ( Thisis
    the particular entity bean we have a problem with)
    Our application server is Weblogic and we have
    Toplink version 9042
    <toplink-ejb-jar>
    <session>
    <name>People</name>
    <project-class>
    com.rhii.mjplus.fo.people.beans.PeopleToplink
    </project-class>
    <login>
    <datasource>MJPool</datasource>
    <non-jts-datasource>MJPool</non-jts-datasource>
    </login>
    <use-remote-relationships>true</use-remote-relationsh
    ips>
    <customization-class>com.rhii.mjplus.common.TopLinkCu
    stomization
    </customization-class>
    </session>
    </toplink-ejb-jar>
    I would appreciate any kind of feedback
    Thanks
    LakshmiCan you refresh that record using a query before you save it ?

  • Problem with outer joins and the class indicator/discriminator

    Hello,
    I am having a problem defining a query in toplink (10.1.3.3).
    In the workbench, I have created a parent and 2 child descriptors. The parent is "AbstractValue", the children are "DefaultValue", classified by the discriminator 'DEF', and "OverrideValue", classified by 'OVR', both located in the same table.
    Another descriptor (containing a one-on-one mapping to both a "DefaultValue", and a "OverrideValue") needs to be queried for its 'value'.
    The way the query should act is: If an override value (row) exists, this one applies for that object. If an override doesn't exist, return the default value.
    The query then comes down to (as I have it now):
    builder.getAllowingNull("OverrideValue").getAllowingNull("value").ifNull(builder.get("DefaultValue").get("value")).equal(builder.getParameter(VALUE_PARAM));
    The problem is that toplink adds the distinction for the different kind of "values" in the where clause WITHOUT checking for null values e.g. it performs an outer join, but then still checks for the discriminator value thus
    ....t1.ovr_id = t2.id(+) AND t2.discriminator = 'OVR' AND ...
    instead of
    ... LEFT JOIN values t2 ON (t1.ovr_id = t2.id AND t2.discriminator = 'OVR') ...
    This leads to the behaviour that the query returns ONLY the objects that have override and default values.
    An overview of the queries (simplified)
    Toplink, at the moment, returns only results if both override and default values exists:
    SELECT t1.id
    t1.def_id,
    t1.ovr_id
    FROM values t2,
    parameter t1,
    values t0
    WHERE nvl(t2.value, t0.value) = 15 AND
    t1.ovr_id = t2.id(+) AND t2.discriminator = 'OVR' AND
    t1.def_id = t0.id AND t0.discriminator = 'DEF'
    Situation Wanted:
    SELECT t1.id
    t1.def_id,
    t1.ovr_id
    FROM parameter t1
    LEFT JOIN values t2 ON (t1.ovr_id = t2.id AND t2.discriminator = 'OVR')
    JOIN values t0 ON (t1.def_id = t0.id AND t0.discriminator = 'DEF')
    WHERE nvl(t2.value, t0.value) = 15
    Anyone know if there is some statement I am missing to allow an actual outer join on descriptors containing class indicators/discriminators? A possible rewrite?
    Thanks in advance,
    Rudy

    This is a bug in TopLink's outer join support for Oracle. Currently the outer join is put in the where clause, instead of the from clause, as we do on other platforms. You might be able to fix it by changing your OraclePlatform to return false for shouldPrintOuterJoinInWhereClause().
    Please log this bug on EclipseLink, or through Oracle technial support.
    There is a workaround using,
    descriptor.getInhertiancePolicy().setAlwaysUseOuterJoinForClassType(true);
    James : http://www.eclipselink.org

  • Class visibility problems in deployed OC4J application

    I have an entity, autogenerated from a database table by JDeveloper, which has the form:
    Entity.java:
    package a.b.c;
    import ...
    @Entity
    @NamedQuery( ... )
    @Table( ... )
    public class Entity implements Serializable {
        @Column( ... )
        : etc.
    }Then I have a stateless session bean, also autogenerated by JDeveloper, which has the form:
    SessionEJBBean.java:
    package a.b.c;
    import ...
    @Stateless(name="SessionEJB")
    public class SessionEJBBean implements SessionEJB {
        @PersistenceContext(unitName="Simple")
        private EntityManager em;
        public List<Entity> queryFindAll() {
            return em.createNamedQuery( ... ).getResultList();
        : etc.
    }Then I have my client (again, largely autogenerated):
    SessionEJBClient.java:
    package a.b.c;
    import ...
    public class SessionEJBClient {
        public static void main(String [] args) {
            try {
                final Context context = getInitialContext();
                SessionEJB sessionEJB = (SessionEJB)context.lookup("SessionEJB");
                List<Entity> entities = sessionEJB.queryFindAll();
            } catch (Exception ex) {
                ex.printStackTrace();
        private static Context getInitialContext() throws NamingException {
         : etc.
    }The above code works fine, however I now want to experiment with the oracle.toplink.essentials.tools.sessionconfiguration.SessionCustomizer interface. To this end, I create a bare-bones customizer class:
    Customizer.java:
    package a.b.c;
    import ...
    public class Customizer implements SessionCustomizer {
        public Customizer() {
        public void customize(Session session) {
    }and make corresponding updates to the persistence.xml file:
    persistence.xml:
    <?xml version="1.0" encoding="windows-1252" ?>
    <persistence
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
      http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
      version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
      <persistence-unit name="Simple">
        <properties>
          <property name="toplink.session.customizer" value="a.b.c.Customizer"/>
        </properties>
      </persistence-unit>
    </persistence>Now, when I redeploy and attempt to run my client application, I'm told that the customizer class cannot be found:
    11-Jun-2007 16:32:17 oracle.j2ee.rmi.RMIMessages
    EXCEPTION_ORIGINATES_FROM_THE_REMOTE_SERVER
    WARNING: Exception returned by remote server: {0}
    javax.ejb.EJBException: Exception [TOPLINK-28006]
    (Oracle TopLink Essentials - 2006.8 (Build 060829)):
    oracle.toplink.essentials.exceptions.EntityManagerSetupException
    Exception Description: ClassNotFound: [a.b.c.Customizer]
    specified in [toplink.session.customizer] property.
    Internal Exception: oracle.classloader.util.AnnotatedClassNotFoundException:
           Missing class: com.logicacmg.security.Customizer
         Dependent class: oracle.toplink.essentials.internal.security.PrivilegedAccessHelper
                  Loader: oracle.persistence:1.0
             Code-Source: /usr/oc4j/toplink/jlib/toplink-essentials.jar
           Configuration: <code-source> in /usr/oc4j/j2ee/home/config/server.xml
    This load was initiated at oracle.persistence:1.0 using the Class.forName() method.
    The missing class is available from the following locations:
         1. Code-Source: /usr/oc4j/j2ee/home/applications/SimpleApp/SimpleApp.jar
    (from <ejb> in /usr/oc4j/j2ee/home/applications/SimpleApp)
            This code-source is available in loader SimpleApp.root:0.0.0.
    This is the current thread's context loader, and it appears that Class.forName()
    was used to load the dependent class. If a loader was not explicitly passed to
    Class.forName(), try passing the result of calling
    Thread.currentThread().getContextClassLoader()So, my question is: what is the correct way for me to configure the system so that my Customizer class is picked up?
    Apologies if this is obvious - I'm still rather new to working in this area (so if anything else I've written doesn't make sense - please don't be afraid to point it out!).
    Regards,
    Alistair.

    Hi, you all seem highly intelligent so I'll give this a shot.
    We're having a similar problem, but TopLink is not involved. Axis2 is, but in our case, the Axis2 application runs fine, it's the other applications that fail.
    We have three applications, Login, Candle, and Webservices (the one with Axis2). When we first start up the applications, they all instantiate fine. We can run Login pages and Candle pages fine. We can also run non-Axis2 Webservices servlets without breaking Login and Candle. But when we run a webservices servlet that uses Axis2, something happens that causes all future Login and Candle class loading to fail! From the error message, OC4J indicates that it is trying to load classes for Login and Candle using the classloader for Webservices.
    So, to summarize, once the webservices app runs an Axis2 servlet, OC4J tries to use the webservices' classloader to load classes for the other applications instead of using their classloaders. The example error message I give below is for the Candle application, but the same problem occurs for Login.
    Please help, even if it's just a suggestion for something to try!! We've been trying to understand this for 2 days and we're still as stumped as ever.
    [java] 2007-06-15 14:59:59,159 ERROR [org.apache.struts.action.RequestProcessor] - No action instance for path /adpThrowableHandler could be created
    [java] oracle.classloader.util.AnnotatedClassNotFoundException:
    [java] Missing class: com.adp.candle.core.ui.struts.exceptionhandler.AdpThrowableHandlerAction
    [java] Dependent class: org.apache.struts.util.RequestUtils
    [java] Loader: default.web.candle:0.0.0
    [java] Code-Source: /C:/build/javaroot/candle/WEB-INF/lib/struts.jar
    [java] Configuration: WEB-INF/lib/ directory in C:\build\javaroot\candle\WEB-INF\lib
    [java] This load was initiated at default.web.webservices:0.0.0 using the loadClass() method.
    [java] The missing class is available from the following locations:
    [java] 1. Code-Source: /C:/build/javaroot/candle/WEB-INF/classes/ (from WEB-INF/classes/ in C:\build\javaroot\candle\WEB-INF\classes)
    [java] This code-source is available in loader default.web.candle:0.0.0.
    -- Brad

Maybe you are looking for

  • Best practice for backing up and restoring forms

    Greetings, I would like to pose a question to the forum and understand how many of you, if at all, "backup" your interactive forms so that in the event one or multple become corrupt, you have a method to recover the forms.  We recently experienced su

  • Which Apple hardware do you recommend?!

    This speeks for itself.. I heard about the trackpad and the time capsule. But which hardware (also cables) are very usefull to have? Please post your experience here!

  • Main window missing

    I installed Ovia suite on my desktop PC and on my laptop. On my desktop it seems OK with buttons for music, pictures, setup tools,etc. On top, there is a button for my phone (5530), for uploading and foor search in the gallary . On the left is filter

  • Find the schema which contains all these tables

    In my DB, only SCOTT has all the three tables EMP,DEPT, BONUS. There are schemas which have either one or two of these tables but only SCOTT has all these 3 tables. To find the schema which contains all these *3* tables. I tried the below mentioned q

  • Re: Embedding Applet which takes dynamic input, into JSP | Need help

    Hi All, We are into a project in Oracle Portal Server where in we want to embed a result of a standalone application(Which is applet) in JSP. This standalone application generates applet based on the input it gets from the current application's datab