Using JOINS in EJB 3 preview

i have tried several combinations from EJB spec and I cannot get any JOIN working:
Below is a class:
@Entity
@Table(name="LINEITEM")
@NamedQuery(name="findLineItemByProductAndOrder",
          queryString="SELECT l FROM LineItem as l INNER JOIN l.product as p WHERE p.sku = :productId AND l.orderId = :orderId")
public class LineItem implements Serializable {
     private Integer orderId;
     private Integer quantity;
     private Integer total;
     private Product product;
     @Id
     @Column(name="ORDER_ID", primaryKey=true)
     public Integer getOrderId() {
          return orderId;
     public void setOrderId(Integer orderId) {
          this.orderId = orderId;
     @Id
     @ManyToOne(fetch=FetchType.EAGER )
     @JoinColumn(name="PRODUCT_ID")
     public Product getProduct() {
          return product;
     public void setProduct(Product product) {
          this.product = product;
     @Column(name="QUANTITY")
     public Integer getQuantity() {
          return quantity;
     public void setQuantity(Integer quantity) {
          this.quantity = quantity;
     @Column(name="AMOUNT")
     public Integer getTotal() {
          return total;
     public void setTotal(Integer total) {
          this.total = total;
When I execute the JOIN, I get:
05/07/25 15:42:39 Caused by: Exception [TOPLINK-0] (Oracle TopLink - 10g release 3 (10.1.3.0) (Build 050221Dev)): oracle.toplink.exceptions.EJBQLException
Exception Description: Syntax Recognition Problem parsing the EJBQL [SELECT DISTINCT l.total FROM LineItem as l JOIN l.product as p WHERE p.sku = :productId AND l.orderId = :orderId]. The parser returned the following [unexpected token: JOIN].
05/07/25 15:42:39      at oracle.toplink.exceptions.EJBQLException.recognitionException(EJBQLException.java:64)
05/07/25 15:42:39      at oracle.toplink.internal.parsing.ejbql.EJBQLParserBase.reportError(EJBQLParserBase.java:1088)
05/07/25 15:42:39      at oracle.toplink.internal.parsing.ejbql.antlr272.EJBQLParser.selectStatement(EJBQLParser.java:141)
05/07/25 15:42:39      at oracle.toplink.internal.parsing.ejbql.antlr272.EJBQLParser.document(EJBQLParser.java:61)
05/07/25 15:42:39      at oracle.toplink.internal.parsing.ejbql.EJBQLParserBase.parseEJBQLString(EJBQLParserBase.java:1142)
05/07/25 15:42:39      at oracle.toplink.internal.ejb.cmp3.EJBQueryImpl.buildDatabaseQuery(EJBQueryImpl.java:96)
05/07/25 15:42:39      at oracle.toplink.internal.annotations.EJBAnnotationsProcessor.addNamedQueriesToSession(EJBAnnotationsProcessor.java:107)
05/07/25 15:42:39      ... 16 more

The key words INNER JOIN are new to EJBQL in EJB 3.0. The current EJB 3.0 preview only supports EJBQL 2.1 plus two additional aspects of EJB 3.0.
Named Parameters
Bulk Updates.
Note: You do not need to specify the INNER JOIN as by default all EJBQL joins are inner joins.

Similar Messages

  • Using join and batch reading in the same query

    Hi,
    I wonder if it is possible to use "Joining" and "batch reading" in the same query.
    For example I Have
    A -> 1-1 B
    A -> 1-1 B
    B -> 1-M C
    This is the case where I have two separate 1-1 relationships to the same class B from A. Toplink 10.0.3 can manage it nicely through joining.
    Now, I would like to read a set of As (with its 2 Bs) and all Cs for each B.
    It seems that the following configuration does not work:
    A -> 1-1 B (use joining)
    A -> 1-1 B (use joining)
    B -> 1-M C (Batch read)
    Any help would be greatly appreciated
    Tony.

    James,
    Would you be so kind to look at the following code?
    Am I formulating it correctly to achieve my desired behavior?
    Trip.class -> 1-1 PickupStop
    Trip.class -> 1-1 DropoffStop
    PickupStop and DropoffStop extend Stop and use same table (STOP)
    Stop -> 1-M StopEvents
    I would like to fetch all Trips, with their Stops and all StopEvents in 2 queries:
    1. Trip joined with Stop
    2. Batchread StopEvents
    Code:
    ReadAllQuery raq = new ReadAllQuery(Trip.class);
    Expression qexp1 = new ExpressionBuilder();
    Expression qexp2 = new ExpressionBuilder();
    raq.addJoinedAttribute("pickupStop");
    raq.addJoinedAttribute("dropoffStop");
    raq.addBatchReadAttribute(qexp1.get("pickupStop").get("vStopEvents"));
    raq.addBatchReadAttribute(qexp2.get("dropoffStop").get("vStopEvents"));

  • How do i get data from a structure using join?

    hi,
    what is the actual use of a structure.?
    my problem is :
    KUAGV is an existing STRUCTURE. it has got one fields each which links to MARA, AND VBKD tables. i want to fetch all related information from KUAGV, mara, vbkd . which is the better way : using joins or views or anything else? how do i
    get data from a structure using join?

    structure temporarily holds  any data passed to it dynamically throughout the runtime but doesnot store it permanently. so
    a structure cannot be included in a join.so instead of incuding structure KUAGV's field in a join 
    search the transparent table in which same field are present and  use it in join.
    A structure if created in DDIC(Data Dictionary) is a global DATA STRUCTURE which is used to group related information, for example you would group all the details of your bank account into a structure BANK_ACCOUNT that contains fields like account_Id, account_holder_name etc.
    If you create a structure in your program then it is local to your program. So you use this structure to create data holders of this DATA TYPE to hold data in your program.
    Edited by: suja thomas on Feb 11, 2008 6:24 AM
    Edited by: suja thomas on Feb 11, 2008 6:31 AM

  • Insert data into table from JSP page using Entity Beans(EJB 3.0)

    I want to insert data into a database table from JSP page using Entity Beans(EJB 3.0).
    1. I have a table 'FRIENDS', (in Oracle 10g database).
    2. It has two columns, 'NAME' and 'CITY'. Both have datatype strings(varchar2).
    3. Now from a JSP page, having two textfields, 'NAME' and 'CITY', I want to insert data into table 'FRIENDS'.
    4. In between JSP and database is a Entity Bean(EJB 3.0) and a stateless session bean.
    5. I am using JDev as editor.
    Please provide me code ASAP or link with similar example.
    Thank you.
    Anurag

    Hi,
    I am also trying that scenario. So u can
    Post the jsp form data to a Servlet which will act as a Controller.
    In the servlet invoke the business method.
    Similar kind of app is in www.roseindia.net
    Hope this would help u.
    Meanwhile if u get any optimal solution, pls post it.
    Thanks,
    Happy Java Coding.

  • How am I able to use an injected EJB in a Managed Bean Constructor?

    JSF 1.2
    EJB 3.0
    Glassfish v1
    Summary:
    Managed bean injected EJB is null when referencing EJB var in constructor.
    Details:
    In my managed bean, I have a constructor that tries to reference an injected EJB, such as:
    public class CustomerBean implements Serializable {
    @EJB private CustomerSessionRemote customerSessionRemote;
    public CustomerBean() {
    List<CustomerRow> results = customerSessionRemote.getCustomerList();
    }The call within the constructor to customerSessionRemote is null - I've double checked this in Netbeans 5.5.
    How am I able to use an injected EJB in a Managed Bean Constructor?
    Thanks,
    --Todd                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

    OK, I was reading the article Web Tier to Go With Java EE 5: A Look at Resource Injection and I understand your statement too.
    Is there any way possible to Inject the EJB prior to the bean instance creation at all?
    Maybe, I need to approach it with the old fashion Java EE 1.4 route and using JNDI in the PostConstruct annotated method to reference the EJB in the managed bean.
    This had to been thought out before, I don't understand why a manged bean's life cycle places any injections at the end of the bean creation.
    Also, now that I understand that the @PostConstruct annotated method will be called by the container after the bean has been constructed and before any business methods of the bean are executed.
    I am trying to reference my EJB as part of the creation of the managed bean.
    What happens: the JSF page loads the managed bean and I need to populate a listbox component with data from an EJB.
    When I try to make the call to the EJB in the listbox setter method, the EJB reference is null.
    Now, I'm not for sure if the @PostConstruct annotation is going to work... hmmmm.
    ** Figured it out. ** I just needed to move the EJB logic that was still in the setter of the component I wanted to populate into the annotated PostConstruct method.

  • When I open a pdf, it used to open in Preview. Now my iMac requires Adobe Reader, but I prefer Preview. How can I make my iMac open pdf in Preview again?

    When I open a pdf, it used to open in Preview. Now my iMac requires Adobe Reader, but I prefer Preview. How can I make my iMac open pdf in Preview again?

    If an image opens in a different application but you want it to always open in Preview when you double-click it, do this one time: Control-click the file, let go of the Control key, press the Option key, then choose Always Open With > Preview. Or, select the image file, choose Get Info from the File menu, then change the "Opens with:" pop-up menu choice to Preview.
    Mac Basics: Preview app views and edits PDFs and images

  • There used to be a preview window in mail where you could read the message in the mail box but now its gone. It just shows me who its from and the date. I now have to click on the message twice to get it to display. How do I get the preview box back?

    There used to be a preview window in mail where you could read the message in the mail box but now its gone. It just shows me who its from and the date. I now have to click on the message twice to get it to display. How do I get the preview box back?

    There is a bug in Mail triggered by receiving a password-protected PDF as an attachment. According to reports, the bug is fixed in OS X 10.8.5.

  • Do i have to use JNDI with EJBS?

    Hi
    I want to use JNDI to lookup a system which i will send messages to using JMS. I would like to have some java classes on Tomcat to do the job. But...whenever i hear about JNDI it is always in relation to EJBs. Can i only use JNDI with EJBS?
    If i can use JNDI is there anything important i need to know about.
    Thanks in advance!
    San H.

    You can definitely use JNDI outside of EJB's - in particular, it's a great interface for dealing with LDAP servers, even securely, and can also be used for DNS interfacing, COS, RMI registries, etc.
    While JNDI was chosen as the method by which J2EE components can locate other components in a distributed environment, it's by no means limited to that task :) It's a wonderful API, and in terms of things you need to know, most everything is covered fairly well at the JNDI tutorial in the various trails that are mapped out there.
    http://java.sun.com/products/jndi/tutorial/
    Good luck!
    James
    James Manning | Principal Engineer
    Porivo Technologies, Inc.
    919.806.0566 | [email protected]
    http://www.porivo.com/
    Measuring end-to-end Web performance.
    Register for a FREE Performance appraisal:
    http://www.porivo.com/peerReview/eval.html

  • Do i have to use JMS with EJBS?

    Hi
    I want to use JMS as a messaging system (a queue) between my system and someone elses. I would like to have some java classes on Tomcat to do the job. But...whenever i hear about JMS i always hear it in relation to EJBs. Can i only use JMS with EJBS?
    If i can use JMS is there anything important i need to know about.
    Thanks in advance!
    San H.

    As far as I understand you are use JNDI and JMS is not bound with EJB's. These are java API's which are independent. Like JDBC you can use with Servlets, Applets, standalone applications, EJB, JMS etc etc.......
    In the same way you can use JNDI and JMS with diferent API. And the important feature of Java is that all java API interact with each other when these are independent. I would appricate comments of everyone......................Thanks

  • Very urgent (using join conditions in PI)

    Hi PI gurus.
    My scenario is SOAP to JDBC(Portal Webdynpro screen to Oracle database).
    I have a requirement to fetch some complex data from the database using complex nested queries.How can i go ahead using join conditions in PI.Here the client is insisiting only on queries and rejected all other methods for solving this like
    1)Java proxies
    2)stored procedures written in the database system
    3)Create a logical view in database system .
    The following option is permitted for me by the client to follow
    ·  Using the SQL_QUERY as a query method in the JDBC Receiver Channel in XI
    · Trying out JOIN conditions to make multiple query into a single query:- Here need to check the feasibility of the JOIN Condition
    Please help me to complete our task.
    points will be rewarded for helpful answers.
    Thanks & Regards
             Veena

    Define the data structures (Request & Response)
    A JDBC Synchronous scenario, the response message type name is dependent on the request message type name
    i.e., if request is
    Dear Raj,
    This is my scenario SOAP-to-JDBC(syn) with out using BPM's.
    4datatypes & message types,
    MT_JDBCRequest
    --->Statement1
    My response msg type
    MT_JDBCRequest_response
    >Statement1_response
    >row
    twoMessage Interfaces, two mappings (for request & response) and one interface mapping 
    Configure the Objects In Integration directory.
    Define the Web services and save the WSDL file After completion of configuration.
    WSDL file is used for the integration of Portal - PI scenario.
    Process Flow:
    1.     User requests for a report from the available list of PSMA reports by providing required set of input parameters.
    2.     Portal forwards the request with these input parameters to PI using web service model through SOAP protocol and the required results are derived from PI
    3.     Report is viewed on portal screen.
    Thanks & regards,
       Veena

  • How can i fetch records from 3 tables in a single query  without using join

    Hi.
    Can any body please tell me <b>How can i fetch records from 3 tables with a single query  without using joins</b>
    Thanx
    prabhudutta

    Hi Prabgudutta,
    We can fetch the data by using the views concept.
    Go throuth this info we can know the how to create view and same like database table only we can fetch the data.
    Views conatin the data at runtime only.
    Four different view types are supported. These differ in the
    way in which the view is implemented and in the methods
    permitted for accessing the view data.
    Database views are implemented with an equivalent view on
    the database.
    Projection views are used to hide fields of a table (only
    projection).
    Help views can be used as selection method in search helps.
    Maintenance views permit you to maintain the data
    distributed
    on several tables for one application object at one time.
    step by step creation of Maintenance view:
    With the help of the table maintenance generator, you are able to maintain the ENTRIES of the table in SM30 transaction.
    It can be set in transaction SE11 - Tools - Table maintenance generator.
    Table maintanance Generator is used to manually input values using transaction sm30
    follow below steps
    1) go to se11 check table maintanance check box under attributes tab
    2) utilities-table maintanance Generator-> create function group and assign it under
    function group input box. Also assign authorization group default &NC& .
    3) select standard recording routine radio in table table mainitainence generator to move table
    contents to quality and production by assigning it to request.
    4) select maintaience type as single step.
    5) maintainence screen as system generated numbers this dialog box appears when you click on create button
    6) save and activate table
    One step, two step in Table Maintenance Generator
    Single step: Only overview screen is created i.e. the Table Maintenance Program will have only one screen where you can add, delete or edit records.
    Two step: Two screens namely the overview screen and Single screen are created. The user can see the key fields in the first screen and can further go on to edit further details.
    SM30 is used for table maintenance(addition or deletion of records),
    For all the tables in SE11 for which Table maintenance is selected , they can be maintained in SM30
    Sm30 is used to maintain the table ,i.e to delete ,insert or modify the field values and all..
    It creates the maintenance screen for u for the aprticular table as the maintenance is not allowed for the table..
    In the SE11 delivery and maintenance tab, keep the maintenance allowed..
    Then come to the SM30 and then enter the table name and press maintain..,
    Give the authorization group if necessary and give the function group and then select maintenance type as one step and give the screen numbers as system specified..
    Then create,,,
    Then u will able to see the maintenance view for the table in which u can able to insert and delete the table values...
    We use SM30 transaction for entering values into any DB table.
    First we create a table in SE11 and create the table maintenance generator for that Table using (utilities-> table maintenance generator) and create it.
    Then it will create a View.
    After that from SM30, enter the table name and Maintain, create new entries, change the existing entries for that table.
    Hope this resolves your query.
    Reward all the helpful answers.
    Rgds,
    P.Naganjana Reddy

  • Creating table using joins in subquery

    can we create a table by using joins in subquery??
    like this
    create table emp as select * from employees e,departments d
    where d.department_id=e.department_id
    can we ??

    What happens when you try it?
    It worked for me. See below:
    drop table test_table;
    create table test_table as
    select e.employee_id, e.first_name || ' ' || e.last_name ename, e.email, e.salary, d.department_name
      from employees e
      join departments d
        on (e.department_id = d.department_id)
    where e.salary = 10000;
    select *
      from test_Table;
    EMPLOYEE_ID ENAME                                          EMAIL                       SALARY DEPARTMENT_NAME             
            150 Peter Tucker                                   PTUCKER                      10000 Sales                         
            156 Janette King                                   JKING                        10000 Sales                         
            169 Harrison Bloom                                 HBLOOM                       10000 Sales                         
            204 Hermann Baer                                   HBAER                        10000 Public Relations

  • Issues with query using joins in 3 tables

    I am trying to fetch data from 3 tables (Project,RIsk and Issues) using join. There are Risks associated with some projects and Issues associated with some projects.
    ProjectID is primary key in Project table.
    RiskID is primary key in risk table. ProjectID is foreign key.
    IssueID is primary key in Issue table.ProjectID is foreign Key.
    I need the projectname, count of risks for projects, count of issues for projects. I am using joins in all the 3 tables. Issue here is, its giving me double of count of risks and issues for each project.
    Please advise how can I get the correct number. I have used the below query,
    select p.projectname,count(r.riskid),count(i.issueid) from project as p
    left outer join risk as r on p.projectid=r.projecctid
    left outer join issue as i on p.projectid=i.projectid
    group by
    p.projectname
    thanks

    Hi All,
    I got a new requirement to count, the number of high priority risks as well as high priority issues along with the other details. I modified the below table to include the changes, but I am not getting the desired result. Could you please help?
    Original query:
    select p.projectname,count(distinct r.riskid), count(distinct i.issueid) from project as p
    left outer join risk as r on p.projectid=r.projecctid
    left outer join issue as i on p.projectid=i.projectid
    group by p.projectname
    Modified query:
    select p.projectname,count(distinct r.riskid),sum(case when r.riskpriority='high' then 1 else 0 end), sum(case when i.issuepriority='high' then 1 else 0 end),count(distinct i.issueid) from project as p
    left outer join risk as r on p.projectid=r.projecctid
    left outer join issue as i on p.projectid=i.projectid
    group by p.projectnameI should get the desired result as:XYZ,8,1,4,4But I am getting:XYZ,8,4,4,32thanks for the reply.

  • SQL Query Using Join

    Hi,
    I am trying to join two tables using joining.
    SQL> select * from test10;
    ID
    1
    2
    SQL> select * from test11;
    ID
    1
    3
    4
    My expected output is
    ID
    1
    2
    3
    4
    I am able to do this using "Union"
    SQL> select * from test10
    2 union
    3 select * from test11;
    ID
    1
    2
    3
    4
    But i want to achieve this using join. Please help..
    Thanks & Regards,
    Arijit

    Hi, Arijit,
    The way to do that with a join is FULL OUTER JOIN, like this:
    SELECT       NVL (t10.id, t11.id)     AS id
    FROM               test10  t10
    FULL OUTER JOIN  test11  t11  ON   t10.id  = t11.id
    ORDER BY  1
    ;If that's exactly what you're trying to do, you should stick with the UNION.
    FULL OUTER JOIN is good when there are other columns involved.

  • Opitmizing sql query using join

    Hello all,
    I have the following query that needs to be written using Joins. I am not sure if this is the correct place to post this question
    Tables used:
    1. activities: (a_id, n_id, market, amount, act_type, act_number, act_seq) --the money paid by the registrant for the market.
    2. market_reg (a_id, n_id, market, reg_stage) -- for each market there are registrants
    3. market (market) -- stores market details
    I need to get sum of total_payment_amount using the condition. I know the query is not opitmized and its not the correct way to get info. I was
    wondering if you guys can suggest me a query that will pull the information by using joins
    SELECT a.a_id, a.n_id, SUM (a.total_payment_amount)
    FROM activities a
    WHERE a.market = 'marketname'
    AND a.a_id||a.n_id IN
    (SELECT mr.a_id||mr.n_id
    FROM market_reg mr
    WHERE mr.market = 'marketname'
    AND mr.reg_stage = 'P'
    AND mr.n_id <> 0)
    AND (a.act_type = 'A'
    OR (a.act_type IS NULL
    AND a.act_number||act_seq IN
    ( SELECT a1.act_number||a1.act_seq
    FROM activities a1
    WHERE a1.market = 'marketname'
    GROUP BY a1.act_number||a1.act_seq
    HAVING COUNT (a1.act_number||a1.act_seq) = 1)))
    GROUP BY a.a_id, a.n_id;
    Thanks

    Hi,
    I see you have already re-posted this on a more appropriate forum, the SQL and PL/SQL forum.
    Thanks,
    Gary

Maybe you are looking for

  • How to find the number of Ram modules in M4000 and M3000

    Dears, Hope you all are in best of your health, I would like to know the command to check the number of RAM modules in M4000 or M3000 Sun Sparc Servers. I think it should be via XSCF Console if am correct? I trigger following command *"showhardconf"*

  • Free overnight not overnight??

    I ordered a new phone from Verizon. On their home page, it says free overnight if ordered before 4pm. Guess what? Mine became a 2 day shipping. Why? Verizon doesn't give a **** about old customers, only getting new customers. They reply "sorry" you d

  • Changing the Condition type Text in the Purchase Order

    Hi SAP, Hi, We have a requirement where by we need to change the Description of the condition type text in the Purchase order. The condition type is a entered at item level. Normally this description comes from the Condition type Definiton i.e., T685

  • Date and varchar2 problem

    hi there when trying to make a procedure inserting into DATE or VARCHAR2 columns it results an error the used syntax is: create or replace procedure add_asset (table_name varchar2,consdate date) is begin execute immediate 'INSERT INTO ' || table_name

  • NFL Mobile

    Alright Verizon.... This is borderline stupidity on your part.... Get NFL Mobile working for the iPad 3. Seriously? I chose to go with Verizon with my 3g iPad purchase a long time ago because of NFL mobile and used it and loved it for a good long tim