Re: How do I query a joined table in cayenne?

From: Frank (farocc..otmail.com)
Date: Mon Feb 26 2007 - 11:32:32 EST

  • Next message: Dov Rosenberg: "Re: Cayenne vs JPA tools"

    Hi Mike,

    Here is my orginal jdbc version of select

    String sql = "SELECT BSYDTAA.BSYPEMP.EMHSP# AS HSP, BSYDTAA.BSYPEMP.EMYLNM,
    BSYDTAA.BSYPEMP.EMYFNM, BSYDTAC.BPRPPCP.PCDEP4, BSYDTAC.BPRPPCP.PCLDDS,
    BSYDTAA.BSYPEMP.EMEMP# AS EMEMP, BSYDTAA.BSYPEMP.EMWPH# AS WPHONE,
    BSYDTAA.BSYPEMP.EMSCH, BSYDTAA.BSYPEMP.EMOTSH FROM BSYDTAA.BSYPEMP,
    BSYDTAC.BPRPPCP WHERE BSYDTAA.BSYPEMP.EMHSP# = BSYDTAC.BPRPPCP.PCHSP# AND
    BSYDTAA.BSYPEMP.EMDEP4 = BSYDTAC.BPRPPCP.PCDEP4 AND (BSYDTAA.BSYPEMP.EMHSP#
    IN (1,5)) AND (BSYDTAA.BSYPEMP.EMDOT=0)";
                sql += " AND EMYLNM like ?";
                sql += " AND EMYFNM like ?";
                sql += " AND PCLDDS like ?";
                sql += " AND PCDEP4 like ?";
                sql += " ORDER BY EMYLNM";

    I can just do this:
    rs = pstmt.executeQuery();
    rs.getString("PCLDDS");
    to get the department name.

    In Cayenne I do not understand how to limit records by department name
       Integer[] hspArray = {new Integer(1), new Integer(5)};
         Expression e = ExpressionFactory.inDbExp(Bsypemp.EMHSPPOUND_PK_COLUMN,
    hspArray);
            e =
    e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.EMYLNM_PROPERTY, lname
            +"%"));
            e =
    e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.EMYFNM_PROPERTY, fname
                    +"%"));
           // I'm lost here e =
    e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.class.DEPARTMENTS_PROPERTY,
    pcldds
           // +"%"));

         SelectQuery query = new SelectQuery(Bsypemp.class,e);
         List records = context.performQuery(query);

    Thanks
    Frank
    ----- Original Message -----
    From: "Mike Kienenberger" <mkienen..mail.com>
    To: <use..ayenne.apache.org>
    Sent: Friday, February 23, 2007 10:02 PM
    Subject: Re: How do I query a joined table in cayenne?

    >I don't follow what you're trying to do.
    > Can you give an example of what you expect the sql to look like when
    > you're done, and give some example data so I can understand what
    > you're trying to do?
    >
    > On 2/23/07, Frank <farocc..otmail.com> wrote:
    >> Hello,
    >>
    >> I cannot figure out how to query the pcldds, pcdep4 fields
    >> What am I doing wrong?
    >>
    >> Thanks
    >>
    >> Frank
    >>
    >> ** Java Code Start
    >> DataContext context = DataContext.getThreadDataContext();
    >> Integer[] hspArray = {new Integer(1), new Integer(5)};
    >> Expression e =
    >> ExpressionFactory.inDbExp(Bsypemp.EMHSPPOUND_PK_COLUMN,
    >> hspArray);
    >> e =
    >> e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.EMYLNM_PROPERTY,
    >> lname
    >> +"%"));
    >> e =
    >> e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.EMYFNM_PROPERTY,
    >> fname
    >> +"%"));
    >> // I'm lost here e =
    >> e.andExp(ExpressionFactory.likeIgnoreCaseExp(Bsypemp.class.DEPARTMENTS_PROPERTY,
    >> pcldds
    >> // +"%"));
    >>
    >> SelectQuery query = new SelectQuery(Bsypemp.class,e);
    >> List records = context.performQuery(query);
    >> ** Java Code End
    >>
    >> Here is my first class
    >> package stemc.cayenne.as400.auto;
    >>
    >> /** Class _Bsypemp was generated by Cayenne.
    >> * It is probably a good idea to avoid changing this class manually,
    >> * since it may be overwritten next time code is regenerated.
    >> * If you need to make any customizations, please use subclass.
    >> */
    >> public class _Bsypemp extends org.objectstyle.cayenne.CayenneDataObject {
    >>
    >> public static final String E_MEMPPOUND_PROPERTY = "eMEMPpound";
    >> public static final String E_MWPHPOUND_PROPERTY = "eMWPHpound";
    >> public static final String EMOTSH_PROPERTY = "emotsh";
    >> public static final String EMSCH_PROPERTY = "emsch";
    >> public static final String EMYFNM_PROPERTY = "emyfnm";
    >> public static final String EMYLNM_PROPERTY = "emylnm";
    >> public static final String DEPARTMENTS_PROPERTY = "departments";
    >>
    >> public static final String EMEMPPOUND_PK_COLUMN = "EMEMP#";
    >> public static final String EMHSPPOUND_PK_COLUMN = "EMHSP#";
    >>
    >> public void setEMEMPpound(java.math.BigDecimal eMEMPpound) {
    >> writeProperty("eMEMPpound", eMEMPpound);
    >> }
    >> public java.math.BigDecimal getEMEMPpound() {
    >> return (java.math.BigDecimal)readProperty("eMEMPpound");
    >> }
    >>
    >>
    >> public void setEMWPHpound(java.math.BigDecimal eMWPHpound) {
    >> writeProperty("eMWPHpound", eMWPHpound);
    >> }
    >> public java.math.BigDecimal getEMWPHpound() {
    >> return (java.math.BigDecimal)readProperty("eMWPHpound");
    >> }
    >>
    >>
    >> public void setEmotsh(String emotsh) {
    >> writeProperty("emotsh", emotsh);
    >> }
    >> public String getEmotsh() {
    >> return (String)readProperty("emotsh");
    >> }
    >>
    >>
    >> public void setEmsch(String emsch) {
    >> writeProperty("emsch", emsch);
    >> }
    >> public String getEmsch() {
    >> return (String)readProperty("emsch");
    >> }
    >>
    >>
    >> public void setEmyfnm(String emyfnm) {
    >> writeProperty("emyfnm", emyfnm);
    >> }
    >> public String getEmyfnm() {
    >> return (String)readProperty("emyfnm");
    >> }
    >>
    >>
    >> public void setEmylnm(String emylnm) {
    >> writeProperty("emylnm", emylnm);
    >> }
    >> public String getEmylnm() {
    >> return (String)readProperty("emylnm");
    >> }
    >>
    >>
    >> public void setDepartments(stemc.cayenne.as400.Bprppcp departments) {
    >> setToOneTarget("departments", departments, true);
    >> }
    >>
    >> public stemc.cayenne.as400.Bprppcp getDepartments() {
    >> return (stemc.cayenne.as400.Bprppcp)readProperty("departments");
    >> }
    >>
    >>
    >> }
    >>
    >>
    >> Here is my second class
    >> package stemc.cayenne.as400.auto;
    >>
    >> /** Class _Bprppcp was generated by Cayenne.
    >> * It is probably a good idea to avoid changing this class manually,
    >> * since it may be overwritten next time code is regenerated.
    >> * If you need to make any customizations, please use subclass.
    >> */
    >> public class _Bprppcp extends org.objectstyle.cayenne.CayenneDataObject {
    >>
    >> public static final String PCDEP4_PROPERTY = "pcdep4";
    >> public static final String PCINA_PROPERTY = "pcina";
    >> public static final String PCLDDS_PROPERTY = "pcldds";
    >> public static final String PCSDDS_PROPERTY = "pcsdds";
    >>
    >> public static final String PCDEP4_PK_COLUMN = "PCDEP4";
    >> public static final String PCHSPPOUND_PK_COLUMN = "PCHSP#";
    >>
    >> public void setPcdep4(java.math.BigDecimal pcdep4) {
    >> writeProperty("pcdep4", pcdep4);
    >> }
    >> public java.math.BigDecimal getPcdep4() {
    >> return (java.math.BigDecimal)readProperty("pcdep4");
    >> }
    >>
    >>
    >> public void setPcina(String pcina) {
    >> writeProperty("pcina", pcina);
    >> }
    >> public String getPcina() {
    >> return (String)readProperty("pcina");
    >> }
    >>
    >>
    >> public void setPcldds(String pcldds) {
    >> writeProperty("pcldds", pcldds);
    >> }
    >> public String getPcldds() {
    >> return (String)readProperty("pcldds");
    >> }
    >>
    >>
    >> public void setPcsdds(String pcsdds) {
    >> writeProperty("pcsdds", pcsdds);
    >> }
    >> public String getPcsdds() {
    >> return (String)readProperty("pcsdds");
    >> }
    >>
    >>
    >> }
    >>
    >>
    >



    This archive was generated by hypermail 2.0.0 : Mon Feb 26 2007 - 11:33:15 EST