Querying tables mapped by oneToMany, manyToOne

Hi,
I have two classes, customers and customerinfo, both mapped to a database. There is a cust_id field in customers which is a primary key and a cust_id field in customerinfo which is a foreign key referencing the cust_id in customers.
Relevant code in each class is as follows:
Customers Class:
@Id
@Column(name = "cust_id", nullable = false)
private Integer custId;
@Column(name = "code", nullable = false)
private String code;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "custId")
private java.util.List <NewDBTest.Persistence.CustomerInfo> customerInfoList;
public Integer getCustId() {
return this.custId;
public void setCustId(Integer custId) {
this.custId = custId;
public java.util.List <NewDBTest.Persistence.CustomerInfo> getCustomerInfoList() {
return this.customerInfoList;
public void setCustomerInfoList(java.util.List <NewDBTest.Persistence.CustomerInfo> customerInfoList) {
this.customerInfoList = customerInfoList;
etc ....
CustomerInfo Class:
@Column(name = "FullName")
private String fullName;
@JoinColumn(name = "cust_id", referencedColumnName = "cust_id")
@ManyToOne
private Customers custId;
etc....
I create a query as follows and get back an instance of the Customers class
List<Customers> cust = em.createQuery("select c from Customers c where c.custId = :custId").setParameter("custId", 1).getResultList();
Then calling the following method returns a list of every row in customerinfo where customer.cust_id=customerinfo.cust_id as expected
List <CustomersInfo> custInfo = cust.get(0).getCustomersInfoList();
So what i want to know is, is there a way of changing the default select statement that is used when calling getCustomersInfoList() to receive a subset of the rows based on values of other fields in customerinfo?
apologies for the length of the post

Hi,
the customerinfo table contains a timestamped record for each update to the table so would contain multiple entries for the one customer. What i was looking to do was to retrieve just the relevant instance from customerinfo using the available methods without having to rewrite the sql statements (ie by passing a date and time into the method and getting back the most recent entry that would have existed at that time). I was hoping there might have been a way of altering the criteria used by editing the tags or something similar
Is there a way of retrieving the statement that calling getCustomersInfoList() in this example uses?
It looks like regular jpql might be the way to go

Similar Messages

  • JPA Toplink OneToMany - ManyToOne Relation will not stored in DB

    Hi
    I am getting the error while inserting the data into Two tables by using the ManyToOne realation.
    i am using 2 tables. In parent table i am giving
    @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,mappedBy="meterInfo")
    @JoinColumn(name="METERID")
    private List<MeterSub> meterSubs=null;
    subtable i am giving
    @ManyToOne(optional=false,targetEntity=com.nexant.mdm.dto.MeterInfoDTO.class)
    @JoinColumn(name="METERID",nullable=false, insertable=false, updatable=false)
    private MeterInfoDTO meterInfo;
    i am inserting the data by using the test class like this:
    MeterInfoDTO mi = new MeterInfoDTO();
    mi.setMeterID(4);
    MeterSub ms = new MeterSub();
    ms.setMeterInfo(mi);
    ms.setMeterData("meterData12");
    ms.setMeterSubPk("103");
    //ms.setMeterID(2);
    List<MeterSub> set = new ArrayList<MeterSub>();
    set.add(ms);
    mi.setMeterSubs(set);
    mi.setMeterName("Sample Meter NAme");
    mi.setMeterTimeZone("TZ");
    Last i am saving the data.
    while inserting the data its giving the following error:
    ORA-02291: integrity constraint (SYSTEM.SYS_C0010451) violated - parent key not found
    Error Code: 2291
    Call: INSERT INTO METERSUB (METERSUBPK, METERDATA, METERID) VALUES (?, ?, ?)
    means its not taking METERID from parent and its giving 0. thats why the error coming like this.
    Can any please help me to resolve this
    Thanks
    Shannu

    Hi Tolls,
    i have one doubt while using the JPA Toplink.
    In my table it have primary key with 2 columns menas composite key acting as a primary key.
    So how i have to declare these fields in POJO class
    and also how to represent these Class and primary key in ONe to One realtion or Many to one relation.
    @ManyToOne(optional=true,targetEntity=com.nexant.mdm.dal.eo.Capability.class)
    @JoinColumn(name="CapabilityID",nullable=false, insertable=true, updatable=false)
    private Capability capability;
    here Capabity is the POjo calss and CapabilityID is the primary key , if in place of CapabilityID i have 2 keys acting as a primary key.
    So how can i represent this?
    waiting for ur valuble response :)

  • How to create olap cube using Named Query Table in Data source View

     I Create on OLAP Cube using Existing Tables Its Working Fine But When i Use Named Query Table with RelationShip To other Named query Table  It Not Working .So give me some deep Clarification On Olap Cube for Better Understanding
    Thanks

    Hi Pawan,
    What do you mean "It Not Working"? As Kamath said, please post the detail error message, so that we can make further analysis.
    In the Data Source View of a CUBE, we can define a named query. In a named query, you can specify an SQL expression to select rows and columns returned from one or more tables in one or more data sources. A named query is like any other table in a data source
    view (DSV) with rows and relationships, except that the named query is based on an expression.
    Reference:Define Named Queries in a Data Source View (Analysis Services)
    Regards,
    Charlie Liao
    TechNet Community Support

  • Dbms_sql  in a different schema from query table-error  ** ORA-00942

    Oracle Experts,
    I think I am having problems with using DBMS_SQL in which the function was created in one schema and the query table was created in a different schema.
    We have 2 schemas: S1, S2
    We have 2 tables:
    T1 in Schema S1
    T2 in Schema S2
    We have a function F1 created by DBA in schema S1 that uses the dbms_sql as:
    CREATE OR REPLACE FUNCTION S1.F1(v1 in VARCHAR2) return NUMBER IS
    cursor1 INTEGER;
    BEGIN
    cursor1 := dbms_sql.open_cursor;
    dbms_sql.parse(cursor1, v1, dbms_sql.NATIVE);
    dbms_sql.close_cursor(cursor1);
    return (0);
    EXCEPTION
    when others then
    dbms_sql.close_cursor(cursor1);
    return (1) ;
    END;
    I am using jdeveloper 11G. We have an Oracle DB 11g.
    We have a java program which uses jdbc to talk to our Oracle DB.
    Basically, in my java program, I call function F1 to check if the query is valid.
    If it is, it returns 0. Otherwise, returns 1:
    oracle.jdbc.OracleCallableStatement cstmt = (oracle.jdbc.OracleCallableStatement) connection.prepareCall ("begin ? := S1.F1 (?); end;");
    cstmt.registerOutParameter (1, java.sql.Types.INTEGER);
    cstmt.setString(2, "Select * from S2.T2");
    cstmt.execute ();
    Since the table that I run the query is T2, created in different schema than F1 was created in, I have the error:
    ** ORA-00942: table or view does not exist
    So my questions are these:
    - I am using Oracle DB 11g, if I run the query on a table that created in a different schema from the one that the function (which uses dbms_sql) was created in, I would get the error ORA-00942?
    - If I runs the query on table T1 in the same schema as the function F1, would I have the same problem(The reason I ask is I cannot create any table in schema S1 because the DBA has to do it; I am not a DBA)
    - This is not a problem, but a security feature because of SQL injection?
    - How to resolve this issue other than creating the table in the same schema as the function that utilizes DBMS_SQL?
    Regards,
    Binh

    Definer rights (default) stored objects run under owner's security domain and ignore role based privileges. So regardless what user you are logged in as, function S1.F1 always executes as user S1 and ignores user S1 roles. Therefore exeuting statement within S1.F1:
    Select * from S2.T2requires user S1 to have SELECT privilege on S2.T2 granted to S1 directly, not via role.
    SY.

  • Unable to find Searchable Item in Query Criteria Map

    Hi ,
    Am try to personalize Advacned Search Region to Include new search Criteria in R12 iSupplier Portal->Home->Orders Tab->Advanced search.
    Am trying to create new search field in the Add another row field through personalization.
    I have created new row criteria,when am trying to create Query Criteria Map,Am unable to list the Searchable Item as it is Drop down list.
    This causing unable to query the records based on the newly created row criteria item.
    Please advise.
    Thansk<Sarath.

    Hi Jobnish,
    There is no code in this requirement.
    There is no error...Issue is unable to query data based on newly create criteria row in Advanced search.
    I can give you navigation:
    iSupplier Portal->Home->Orders Tab->Press advanced search Region
    Click on the Personalize Page(I hope you know how to enable the personalize link using profile option).
    In SupplierRN ->Advanced Search Criteria and creating custom item Criteria Row..
    We need to map this field in Advanced Query Mapping.
    However the issue is the Am unbale find the Searchable item (which is created in Criteria Row) in the drop downlist.
    I can provide screen-shot if you need.
    Thanks,Sarath.

  • Query in mapping process....

    can i do the query in mapping process 4 dimensions or cubes??? using which pallete??? n how 2 use it with my own queries???
    thx guyz....

    Perhaps if you rewrite your question in something that resembles English you may get an answer.

  • A table mapping between ISO country code and ISO currency code

    Hi experts,
    I want to know whether there is a table mapping between ISO country code and ISO currency code.I have searched T005(Countries) and TCURC(Currency Codes).why the filed of WAERS(Country currency) hasn't maintained in talbe T005?Whether ISO country code and ISO currency code hasn't direct relation?
    Regards,
    Kelvin

    Kelvin,
    If you know the table which is having ISO Country Code or ISO Currency code,then go to that table and clik on GRAPHIC(ctrlShiftf11) which will give the foreign key relationships.I guess checking all those table displayed in the graphic will give you some lead.
    K.Kiran.

  • A table mapping between country code and currency code

    Hi experts,
    I want to know whether there is a table mapping between country code and currency code.I have found the table T005(Countries).But I don't why the filed of WAERS(Country currency) hasn't maintained in talbe T005?Whether country code and currency code hasn't direct relation?
    Regards,
    Kelvin

    Dear Kelvin
    The said field (WAERS) can be fetched from many tables.  To name a few, below are some of the tables in which, you can see the field for currency.
    1)  BKKI4
    2)  BKKI5
    3)  BWPOS
    4)  KNKA
    5)  KNVV
    6)  MSEG
    thanks
    G. Lakshmipathi

  • Dynamic query table for report based on LOV selected

    Hi,
    Need some suggestion and guidance how to dynamically query table via lov for report .
    Scenario:
    Table, TABLE_LIST, has tablename (table in DB) and filter (for where clause) column. The TABLENAME_LOVE is derived from table TABLE_LIST.
    SELECT TABLENAME D, TABLENAME R FROM TABLE_LIST
    In Page 2,a page select list item,P2_TABLENAME to use TABLENAME_LOV
    All data in tables in the table_list have identical structure (columns, triggers, primary key, and so on).
    I want to have the report region query from the table based on selected LOV.
    Example,
    Tablename Filter
    TB1
    CD2 ACTIVE='Y'
    When select TB1, the report regin will query based on TB1.
    When select CD2, the report regin will query based on CD2 WHERE ACTIVE='Y'
    Question:
    How can I query based on &P2_TABLENAME. WHERE &P2_FILTER.
    Like
    select col1, col2 from &P2_TABLENAME WHERE &P2FILTER
    Greatly appreciate any suggestion and some guidance.
    Tigerwapa

    Hi,
    You should always post your Apex version, DB version and other information as suggested in the FAQ.
    And the moment you talk report you should state whether it is IR or Classic.
    As for your query, have you explored the Report type "SQL Query (PL/SQL function body returning SQL query)" ?
    That might be a good fit for what you are trying to achieve.
    Regards,

  • Import Server - Multiple Qualified Table - Map Crash

    Hello,
    Requirement: I need to update multiple qualified table using single source file.
    Preparation: I have created a map where mapping to multiple qualified table fields maually.
                       Have created a Inbound Port using the above map.
    Problem: Import server throws an exception; while opening the Import Manager using the Port Option and corresponding Exception; Lot of fields were un-mapped. Looks like Import map crashed.
    Please feel free to throw some light reg the same!
    Thanks
    Alexander

    Hi Alexander,
    If you are performing multiple qualifier table mapping and importing then you will hav eto create differnt map for each table importing.In that case you will rrquire multiple inbound ports and in each ports deatils you will give the map name pertaining to which qualified lookup table you wish to import.
    Actually using automatic importing for lookups is not desirable as the lookups always need to be prepopulated before your main table importing.
    The exception taht you are receiving could be due to the reason that the map you are saving is using only one table mapping and so most of the fields are left unmapped.
    try not to use automatic importing for Lookup qualifier tables and use manual importing and see if the the exception still comes.
    Hope it helps
    Kindly reaward points if found useful
    Thanks
    Simona

  • Best way to keep parameters associated with Listobject query table?

    I'm working to establish a standard approach to retrieving data from SQL server databases into Excel based applications.  My current proposed structure allows for exactly one Listobject with a query table per sheet in a workbook.  The connection
    strings and SQL texts for all queries in the workbook are kept in a single table on its own (hidden) sheet.  Each "Datasheet" then has a table and named cells QueryName, ConnectionString and SQLText which are scoped at the sheet level.  The
    connection string and raw SQLText are retrieved from the table using QueryName as an lookup value into the QueryTable.  There are a series of parameter cells whose values are inserted into the SQL text using =Substitute() formulas, where the raw query
    text has #P1#, #P2#, etc, which are subsituted with the parameter values from the parameter cells to assemble the final query text in the named cell SQLText.  To refresh the application, a simple VBA Sub iterates through all the sheets in the workbook.
     If the sheet contains a ListObject with a Querytable, then ConnectionString and SQLText are written to the .Connection and .CommandText properties of the QueryTable and the table is refreshed.
    This works great, but I have a developer who has asked to be able to put multiple Listobjects with querytables on a single sheet so he doesn't need so many sheets in the workbook.  My first though was why do you care how many sheets you have, but on
    the other hand a single sheet can certainly handle more than one ListObject, so... 
    If you're still with me, THANKS!  Here's the question.  If I have more than one ListObject on a sheet, I'll need a ConnectionString and SQLText cell for each one.  How do I keep them associated?  I could require the developer to name
    them ConnectionString1/SQLText1, ConnectionString2/SQLText2, etc. and then expect that ListObject(1) goes with ConnectionSTring1/SQLText1, etc. but I'm not sure that the ListObject index numbers will stay constant.  I could somehow link to the table name,
    but that can be changed...  Any ideas?  If this is too general a question, feel free to ignore.
    Thanks,
    J

     I could somehow link to the table name, but that can be changed...  Any ideas?
    Not sure if this will help or not but maybe a little from several areas might point you in the right direction.
    If you are concerned about users changing the table name then you can define a name to reference the table and then if the user changes the table name then the Refers to automatically changes to the new table reference but your defined name remains the same.
    However, if users want to break a system even when you think you have it bullet proof the users come along with armour piercing bullets.
    Example:
    Insert a table (say Table1)
    Go to Define a name and insert a name of choice (eg.  ForMyTab1)
    Then click the icon at the right of the Refers to field and select the entire table including the column headers and it will automatically insert something like the following in the Refers to field.
    =Table1[#All]
    Now if a user changes the table name then Table1 will also automatically change.
    Example code to to reference the table in VBA.
    Sub Test()
        Dim wsSht1 As Worksheet
        Dim lstObj1 As ListObject
        Set wsSht1 = Worksheets("Sheet1")
        Set lstObj1 = wsSht1.ListObjects(Range("ForMyTab1").ListObject.Name)
        MsgBox lstObj1.Name
    End Sub
    Regards, OssieMac

  • Help with multi-table mapping for one-to-many object inheritance

    Hi,
    I have posted on here before regarding this (Toplink mapping for one-to-many object inheritance but I am still having problems mapping my object model to my schema.
    Object model
    The Person and Organisation objects contain base information and have the primary keys person_id and organisation_id. It is important that there is no duplication of person and organisation records, no matter how many times they are saved in different roles.
    There are two types of licenceholder in the problem domain, and the ILicenceHolder interface defines information and methods that are common to both. The PersonalLicenceHolder object represents one of these types of licenceholder, and is always a person, so this class extends Person and implements ILicenceHolder.
    The additional information and methods that are required by the second type of licenceholder are defined in the interface IPremisesLicenceHolder, which extends ILicenceHolder. Premises licence holders can either be people or organisations, so I have two objects to represent these - PremisesLicenceHolderPerson which implements IPremisesLicenceHolder and extends Person, and PremisesLicenceHolderOrganisation which implements IPremisesLicenceHolder and extends Organisation.
    The model is further complicated by the fact that any single Person may be both a PersonalLicenceHolder and a PremisesLicenceHolderPerson, and may be so several times over. In this case, the same basic Person information needs to be linked to several different sets of licenceholder information. In the same way, any single Organisation may be a PremisesLicenceHolderOrganisation several times over.
    Sorry this is complicated!
    Schema
    I have Person and Organisation tables containing the basic information with the primary keys person_id and organisation_id.
    I have tried to follow Donald Smith's advice and have created a Role table to record the specialised information for the different types of licence holder. I want the foreign keys in this table to be licenceholder_id and licence_id. Licenceholder_id will reference either organisation_id or person_id, and licence_id will reference the primary key of the Licence table to link the licenceholder to the licence. Because I am struggling with the mapping, I have changed licenceholder_id to person_id in an attempt to get it working with the Person object before I try the Organisation.
    Then, when a new licenceholder is added, if the person/organisation is already in the database, a new record is created in the Role table linking the existing person/organisation to the existing licence rather than duplicating the person/organisation information.
    Mapping
    I am trying to use the toplink mapping workbench to map my PremisesLicenceHolderPerson object to my schema. I have mapped all inherited attributes to superclass (Person). The primary table that the attributes are mapped to is Person, and I have used the multi-table info tab to add Roles as an additional table and map the remaining attributes to that.
    I have created the references PERSON_ROLES which maps person.person_id to roles.person_id, ROLES_PERSON which maps roles.person_id to person.person_id and ROLES_LICENCE which maps roles.licence_id to licence.licence_id.
    I think I have put in all the relationships, but I cannot get rid of the error message "The following primary key fields are unmapped: PERSON_ID".
    Please can somebody tell me how to map this properly?
    Thank you.

    I'm not positive about your mappings, but it looks like the Person object should really have a 1:M or M:M mapping to the Licenceholder table. This then means that your object model should be similar, in that Person object could have many Licenses, instead of being LicenceHolders. From the looks of it, you have it set up from the LicenceHolder perspective. What could be done instead if a LicenceHolder could have a 1:1 reference to a person data object, rather than actually be a Person. This would allow the person data to be easily shared among licences.
    LicenceHolder1 has an entry in the LicenceHolder table and Person table. LicenceHolder2 also has entries in these tables, but uses the same entry in the Person table- essentially it is the same person/person_ID. If both are new objects, TopLink would try to insert the same person object into the Person table twice. I'm not sure how you have gotten around or are planning to get around this problem.
    Since you are using inheritance, it means that LicenceHolder needs a writable mapping to the person.person_id field- most commonly done through a direct to field mapping. From the description, it looks like roles.person_id is a foreign key in the multiple table mapping, meaning it would be set based on the value in the person.person_id field, but the person.person_id isn't actually mapped in the object. Check to make sure that the ID attribute LicenceHolder is inheriting from person hasn't been remapped in the LicenceHolder descriptor to a different field.
    Best Regards,
    Chris

  • FACT table Mapping

    I could not find a clear documentation on how to create a mapping to load CUBE
    after creating dimensions. I am using 10.1.0.2 version.
    I have two dimensions and one FACT table
    DIM1
    D1_sk
    other attributes
    DIM2
    D2_SK
    other attributes
    FACT
    D1_sk
    D2_sk
    measure attributes
    In previous forums I came across to use a lookup on dimensions
    to load the FACT table.
    But what would be my source to perform a lookup on Dimensions ?
    because My dimensions are the source for the FACT TABLE.
    Can I Join the DIMENSIONS to load the FACT TABLE?
    can any one suggest the right approach to creat a FACT table mapping.
    Thanks in advance.

    Hi,
    If you can tell what you are tying to achieve we can give some suggestions. You can use the same sources which you have used to load Dimensions, to load Fact table.
    Mahesh

  • TopLink Question - Mutliple Object to Single Table mapping

    Just a short question,
    Does toplink support mapping feature as such that it can map two distinct objects with single table that when in insertion or selection those two objects can be manipulated, selected in single operation? I know that TopLink mapping supports single object from multiple table mapping, but I'm not sure about multiple objects being associated with single table.
    Secondly, does Hibernate has something like what I described above?
    Howard.

    Hi Howard,
    You can map two objects to a single table if the objects are related by aggregation.
    In TopLink, two objects–a source (parent or owning) object and a target (child or owned) object–are related by aggregation if there is a strict one-to-one relationship between them, and all the attributes of the target object can be retrieved from the same data source representation as the source object. This means that if the source object exists, then the target object must also exist, and if the source object is destroyed, then the target object is also destroyed.
    http://www.oracle.com/technology/products/ias/toplink/doc/1013/main/_html/tutbuild004.htm#sthref2325
    -Blaise

  • Multiple Table Mapping To Single Entity in Workshop 8.1

    I've taken a test run on creating entity beans with workshop 8.1, although mapping
    an CMP entity to a single database table looks to be relatively straightforward,
    I can't seem to find a way to map multiple database tables to a single CMP entity
    (at least not via workshop). Do I have to manually modify the deployment descriptors
    after building with workshop?

    Thanks, John.
    Jingwei
    "John Reynolds" <[email protected]> wrote:
    >
    Jingwei Zhang <[email protected]> wrote:
    Is there any example of using ejbgen to map single EJB to multiple tables?
    Jingwei... I found this at: http://www.beust.com/cedric/ejbgen/#multiple-table-mapping
    By default, Entity beans are mapped to one table, with the attribute
    table-name
    on the tag @ejbgen:entity. If you want to map your Entity bean to more
    than one
    table, you can use the table-name attribute on individual @ejbgen:cmp-fields.
    All the CMP fields that do not have a table-name attribute will use the
    table
    specified on @ejbgen:entity (which can therefore be considered as the
    "default"
    table).
    If you want to map an Entity bean to several tables, you need to specify
    a comma-separated
    list of tables in the table-name attribute (and also on column). For
    example:
    * @ejbgen:cmp-field
    * column = "bal1, bal2"
    * table-name = "Table1, Table2"
    Make sure that the number of tables matches the number of columns, and
    that the
    columns exist in the corresponding table (for example, in the example
    above, Table1
    must contain column bal1, and Table2, bal2).

Maybe you are looking for

  • Assign sales quantities for each customer.

    Dear Gurus, i have a limited production of a material and there are many buyers for it. so i need to set a solution in order to assing to each customer a determinated quantity of this producto for each month. ie: Production of material A by month: 10

  • "Quicktime Buffer Overrun Detected" When Updating Existing Software

    So the subject line basically says it all. Quicktime runs fine until I pull down the "help" menu and select "Update Existing Software" which immediately gives me a C++ error "Quicktime Buffer Overrun Detected." I've tried repairing Quicktime and it d

  • XFCE4 panel Action buttons don't work

    Hello, I'm having multiple problems with Action buttons from XFCE4 panel. I use slim (1.3.3-5) and Xfce (4.10). 1. Suspend and switch user option is greyed out. 2. The 'main button' (which displays user name) appears about 2 minutes after log in. Whe

  • DVD Player in Mac 10.6.8

    I am testing out a brand-new External Optical drive ASUS SDRW-08D2S-U for use with my Mac OS X 10.6.8. The Mac recognizes the new drive, and when I insert a DVD into it, the Disk with its title appears on my desktop.  Also, QuickTime Player is activa

  • Photos on ipad mini

    How do you transfer photos from my ipad mini to my mac computer ? They did not transfer after syncing.