I thought I did. I am persistently getting another error now.
>
> 16:14:35,803  [Schema               main       DEBUG]  Creating table
> "DailySalesTotalForParty"
>
> 16:14:35,803  [Schema               main       DEBUG]  Creating table
> "DailySalesTotalForParty"
>
> 16:14:35,803  [Schema               main       DEBUG]  CREATE VIEW
> DailySalesTotalForParty (   "transactionDate",   "totalAmount" ,
> "fromPartyReference",   "transactiontype" ) AS SELECT
> "Transaction"."transactionDate" ,    SUM("Transaction"."faceValue") AS
> totalAmount ,   "Transaction"."fromPartyReference"  ,
> "Transaction"."transactiontype"   FROM    "Transaction" GROUP BY
> "Transaction"."transactionDate",   "Transaction"."fromPartyReference",
> "Transaction"."transactiontype"
>
> 16:14:35,803  [Schema               main       DEBUG]  CREATE VIEW
> DailySalesTotalForParty (   "transactionDate",   "totalAmount" ,
> "fromPartyReference",   "transactiontype" ) AS SELECT
> "Transaction"."transactionDate" ,    SUM("Transaction"."faceValue") AS
> totalAmount ,   "Transaction"."fromPartyReference"  ,
> "Transaction"."transactiontype"   FROM    "Transaction" GROUP BY
> "Transaction"."transactionDate",   "Transaction"."fromPartyReference",
> "Transaction"."transactiontype"
>
> 16:14:35,803  [Schema               main       DEBUG]  CREATE VIEW
> DailySalesTotalForParty (   "transactionDate",   "totalAmount" ,
> "fromPartyReference",   "transactiontype" ) AS SELECT
> "Transaction"."transactionDate" ,    SUM("Transaction"."faceValue") AS
> totalAmount ,   "Transaction"."fromPartyReference"  ,
> "Transaction"."transactiontype"   FROM    "Transaction" GROUP BY
> "Transaction"."transactionDate",   "Transaction"."fromPartyReference",
> "Transaction"."transactiontype"
>
> 16:14:35,804  [Datastore            main       ERROR]  Error thrown
> executing CREATE VIEW DailySalesTotalForParty (   "transactionDate",
> "totalAmount" ,  "fromPartyReference",   "transactiontype" ) AS SELECT
> "Transaction"."transactionDate" ,    SUM("Transaction"."faceValue") AS
> totalAmount ,   "Transaction"."fromPartyReference"  ,
> "Transaction"."transactiontype"   FROM    "Transaction" GROUP BY
> "Transaction"."transactionDate",   "Transaction"."fromPartyReference",
> "Transaction"."transactiontype"  : object name already exists:
> DAILYSALESTOTALFORPARTY in statement [CREATE VIEW DailySalesTotalForParty (
>   "transactionDate",   "totalAmount" ,  "fromPartyReference",
> "transactiontype" ) AS SELECT    "Transaction"."transactionDate" ,
> SUM("Transaction"."faceValue") AS totalAmount ,
> "Transaction"."fromPartyReference"  ,    "Transaction"."transactiontype"
> FROM    "Transaction" GROUP BY  "Transaction"."transactionDate",
> "Transaction"."fromPartyReference",  "Transaction"."transactiontype" ]
>
> java.sql.SQLSyntaxErrorException: object name already exists:
> DAILYSALESTOTALFORPARTY in statement [CREATE VIEW DailySalesTotalForParty (
>   "transactionDate",   "totalAmount" ,  "fromPartyReference",
> "transactiontype" ) AS SELECT    "Transaction"."transactionDate" ,
> SUM("Transaction"."faceValue") AS totalAmount ,
> "Transaction"."fromPartyReference"  ,    "Transaction"."transactiontype"
> FROM    "Transaction" GROUP BY  "Transaction"."transactionDate",
> "Transaction"."fromPartyReference",  "Transaction"."transactiontype" ]
>
> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
>
> Not sure why it says object name already exists!!.


On Thu, Feb 27, 2014 at 12:03 AM, Dan Haywood
<[email protected]>wrote:

> Glad you finally sorted it.
>
>
> On 26 February 2014 16:34, james agada <[email protected]> wrote:
>
> > SOLVED:
> > 1. Fix SQL issues and ensure the columns are in the GROUP BY Clause if
> they
> > are not an aggregate
> > 2. Replace entity reference with direct column reference.  it appears the
> > referenced objects have column in table with _ID_OID postfix
> > 3. Match the types for the entity reference column - they are BIGINT,
> > declare as Long.
> >
> >
> > On Wed, Feb 26, 2014 at 4:05 PM, james agada <[email protected]>
> wrote:
> >
> > > Oops. Fixed the missing comma but the error is still there in a
> different
> > > way
> > >
> > > integration.tests.actions.ToDoItemTest_completed  Time elapsed: 0 sec
> >  <<<
> > >> ERROR!
> > >>
> > >> java.lang.RuntimeException:
> > >> org.datanucleus.exceptions.NucleusDataStoreException: An exception was
> > >> thrown while adding/validating class(es) : user lacks privilege or
> > object
> > >> not found: fromParty
> > >>
> > >> java.sql.SQLSyntaxErrorException: user lacks privilege or object not
> > >> found: fromParty
> > >>
> > >>
> > >>
> > >
> > >
> > > On Wed, Feb 26, 2014 at 3:31 PM, Dan Haywood <
> > [email protected]
> > > > wrote:
> > >
> > >> You are still missing the comma before "fromParty" field in  the
> SELECT
> > >> clause.
> > >>
> > >>         @Extension(vendorName = "datanucleus", key =
> "view-definition",
> > >>
> > >>             value = "CREATE VIEW \"DailySalesTotalForParty\" " +
> > >>
> > >>                     "( " +
> > >>
> > >>                     "  {this.transactionDate}, " +
> > >>
> > >>                     "  {this.totalAmount} " +
> >  <<<<<<<<<<<<<<
> > >> HERE <<<<<<<<<<<<<
> > >>
> > >>                     "  {this.fromParty} " +
> > >>
> > >>                     ") AS " +
> > >>
> > >>
> > >>
> > >>
> > >> On 26 February 2014 14:20, james agada <[email protected]> wrote:
> > >>
> > >> > This is my class - cleaned up
> > >> >
> > >> >  /*
> > >> >
> > >> >  *  Licensed to the Apache Software Foundation (ASF) under one
> > >> >
> > >> >  *  or more contributor license agreements.  See the NOTICE file
> > >> >
> > >> >  *  distributed with this work for additional information
> > >> >
> > >> >  *  regarding copyright ownership.  The ASF licenses this file
> > >> >
> > >> >  *  to you under the Apache License, Version 2.0 (the
> > >> >
> > >> >  *  "License"); you may not use this file except in compliance
> > >> >
> > >> >  *  with the License.  You may obtain a copy of the License at
> > >> >
> > >> >  *
> > >> >
> > >> >  *        http://www.apache.org/licenses/LICENSE-2.0
> > >> >
> > >> >  *
> > >> >
> > >> >  *  Unless required by applicable law or agreed to in writing,
> > >> >
> > >> >  *  software distributed under the License is distributed on an
> > >> >
> > >> >  *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
> > >> >
> > >> >  *  KIND, either express or implied.  See the License for the
> > >> >
> > >> >  *  specific language governing permissions and limitations
> > >> >
> > >> >  *  under the License.
> > >> >
> > >> >  */
> > >> >
> > >> >
> > >> > package dom.todo;
> > >> >
> > >> >
> > >> > import java.math.BigDecimal;
> > >> >
> > >> > import java.util.List;
> > >> >
> > >> >
> > >> > import javax.jdo.annotations.Extension;
> > >> >
> > >> > import javax.jdo.annotations.IdentityType;
> > >> >
> > >> > import javax.jdo.annotations.InheritanceStrategy;
> > >> >
> > >> >
> > >> > import org.joda.time.LocalDate;
> > >> >
> > >> >
> > >> > import org.apache.isis.applib.AbstractViewModel;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Bookmarkable;
> > >> >
> > >> > import org.apache.isis.applib.annotation.DescribedAs;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Hidden;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Immutable;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Optional;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Render;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Render.Type;
> > >> >
> > >> > import org.apache.isis.applib.annotation.Title;
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > @javax.jdo.annotations.PersistenceCapable(
> > >> >
> > >> >     identityType = IdentityType.NONDURABLE,
> > >> >
> > >> >     table = "DailySalesTotalForParty",
> > >> >
> > >> >     extensions = {
> > >> >
> > >> >         @Extension(vendorName = "datanucleus", key =
> > "view-definition",
> > >> >
> > >> >             value = "CREATE VIEW \"DailySalesTotalForParty\" " +
> > >> >
> > >> >                     "( " +
> > >> >
> > >> >                     "  {this.transactionDate}, " +
> > >> >
> > >> >                     "  {this.totalAmount} " +
> > >> >
> > >> >                     "  {this.fromParty} " +
> > >> >
> > >> >                     ") AS " +
> > >> >
> > >> >                     "SELECT " +
> > >> >
> > >> >                     "   \"Transaction\".\"transactionDate\" , " +
> > >> >
> > >> >
> > >> >                     "   SUM(\"Transaction\".\"faceValue\") AS
> > >> > \"totalAmount\" ," +
> > >> >
> > >> >                     "   \"Transaction\".\"fromParty\"  " +
> > >> >
> > >> >                     "  FROM " +
> > >> >
> > >> > "   \"Transaction\" " +
> > >> >
> > >> >                     "GROUP BY " +
> > >> >
> > >> >                     " \"transactionDate\",  " +
> > >> >
> > >> > " \"fromParty\" " +
> > >> >
> > >> >                     "ORDER BY " +
> > >> >
> > >> >                     " \"transactionDate\" ")
> > >> >
> > >> >     })
> > >> >
> > >> > @javax.jdo.annotations.Inheritance(strategy =
> > >> > InheritanceStrategy.NEW_TABLE)
> > >> >
> > >> > @javax.jdo.annotations.Queries( {
> > >> >
> > >> > @javax.jdo.annotations.Query(
> > >> >
> > >> > name="DailySalesForParty", language="JDOQL",
> > >> >
> > >> > value="SELECT FROM dom.todo.DailySalesTotalForParty WHERE fromParty
> ==
> > >> > :party ")
> > >> >
> > >> > })
> > >> >
> > >> > @Bookmarkable
> > >> >
> > >> > @Immutable
> > >> >
> > >> > public class DailySalesTotalForParty  {
> > >> >
> > >> >
> > >> >         // //////////////////////////////////////
> > >> >
> > >> > /**
> > >> >
> > >> >     @javax.jdo.annotations.Column(allowsNull = "false")
> > >> >
> > >> >     private String fromParty;
> > >> >
> > >> >
> > >> >     /**
> > >> >
> > >> >      * Lazily loaded from the {@link #getReference() reference},
> > >> provides
> > >> > access
> > >> >
> > >> >      * to the underlying {@link Property}.
> > >> >
> > >> >       @Optional
> > >> >
> > >> >     @Title(sequence = "1")
> > >> >
> > >> >     public String getFromParty() {
> > >> >
> > >> >         return fromParty;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >     public void setFromParty(final String party) {
> > >> >
> > >> >         this.fromParty = party;
> > >> >
> > >> >     }
> > >> >
> > >> > */
> > >> >
> > >> >     // //////////////////////////////////////
> > >> >
> > >> >  private java.math.BigInteger fromParty;
> > >> >
> > >> >  @Optional
> > >> >
> > >> > public java.math.BigInteger getFromParty(){
> > >> >
> > >> > return this.fromParty;
> > >> >
> > >> > }
> > >> >
> > >> > public void setFromParty_Party_ID_OID(java.math.BigInteger id ){
> > >> >
> > >> > this.fromParty =id;
> > >> >
> > >> > }
> > >> >
> > >> >
> > >> >  //////////////////////////////////////
> > >> >
> > >> >     private LocalDate transactionDate;
> > >> >
> > >> >
> > >> >     @Title(sequence = "2", prepend = " - ")
> > >> >
> > >> >     public LocalDate getTransactionDate() {
> > >> >
> > >> >         return transactionDate;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >     public void setTransactionDate(final LocalDate dueDate) {
> > >> >
> > >> >         this.transactionDate = dueDate;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >     // //////////////////////////////////////
> > >> >
> > >> >
> > >> >     private BigDecimal totalAmount;
> > >> >
> > >> >
> > >> >     public BigDecimal getTotalAmount() {
> > >> >
> > >> >         return totalAmount;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >     public void setTotalAmount(final BigDecimal total) {
> > >> >
> > >> >         this.totalAmount = total;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >
> > >> >
> > >> >     // //////////////////////////////////////
> > >> >
> > >> >
> > >> >    /** @Render(Type.EAGERLY)
> > >> >
> > >> >     public List<Transaction> getTransactions() {
> > >> >
> > >> >     return
> transactions.findTransactionForPartyOnDate(getFromParty(),
> > >> > getTransactionDate());
> > >> >
> > >> >     }
> > >> >
> > >> > */
> > >> >
> > >> >     // //////////////////////////////////////
> > >> >
> > >> >
> > >> >     private Partytypes partytypes;
> > >> >
> > >> >
> > >> >     final public void injectPartytypes(final Partytypes partytypes)
> {
> > >> >
> > >> >         this.partytypes = partytypes;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> >     private Transactions transactions;
> > >> >
> > >> >
> > >> >     final public void injectTransactions(final Transactions
> > >> transactions)
> > >> > {
> > >> >
> > >> >         this.transactions = transactions;
> > >> >
> > >> >     }
> > >> >
> > >> >
> > >> > }
> > >> >
> > >> >
> > >> > This is the error
> > >> >
> > >> >
> > >> > 15:34:03,784  [Schema               main       DEBUG]  CREATE VIEW
> > >> >> "DailySalesTotalForParty" (   "transactionDate",   "totalAmount"
> > >> >> "fromParty" ) AS SELECT    "Transaction"."transactionDate" ,
> > >> >> SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty"    FROM    "Transaction" GROUP BY
> > >> >> "transactionDate",   "fromParty" ORDER BY  "transactionDate"
> > >> >>
> > >> >> 15:34:03,790  [Datastore            main       ERROR]  Error thrown
> > >> >> executing CREATE VIEW "DailySalesTotalForParty" (
> > "transactionDate",
> > >> >> "totalAmount"   "fromParty" ) AS SELECT
> > >>  "Transaction"."transactionDate"
> > >> >> ,    SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty"    FROM    "Transaction" GROUP BY
> > >> >> "transactionDate",   "fromParty" ORDER BY  "transactionDate"  :
> > >> unexpected
> > >> >> token: fromParty required: )
> > >> >>
> > >> >> java.sql.SQLSyntaxErrorException: unexpected token: fromParty
> > >> required: )
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source)
> > >> >>
> > >> >>
> > >> > SQL seems ok, what am i missing?
> > >> >
> > >> >
> > >> >
> > >> >
> > >> > On Wed, Feb 26, 2014 at 1:46 PM, GESCONSULTOR - Óscar Bou <
> > >> > [email protected]> wrote:
> > >> >
> > >> >> Hi, James.
> > >> >>
> > >> >> I think that the GROUP BY clause should include all fields
> referenced
> > >> in
> > >> >> the SELECT that are not part of aggregation formulas (like SUM,
> AVG,
> > >> MIN,
> > >> >> MAX, etc.).
> > >> >>
> > >> >> As "Transaction"."fromParty_Party_ID_OID" is referenced on the
> SELECT
> > >> >> part without being included on any of those aggregation formulas,
> it
> > >> should
> > >> >> be included on the GROUP BY section.
> > >> >>
> > >> >> HTH,
> > >> >>
> > >> >> Oscar
> > >> >>
> > >> >>
> > >> >>
> > >> >> El 26/02/2014, a las 13:38, james agada <[email protected]>
> > >> escribió:
> > >> >>
> > >> >> Took your advice and got it to work when I do not have the
> fromParty
> > >> >> attribute. What could i be doing wrong. This is the error
> > >> >>
> > >> >> 47:29,831  [Schema               main       DEBUG]  Check of
> > existence
> > >> of
> > >> >>
> > >> >> "DailySalesTotalForParty" returned no table
> > >> >>
> > >> >> 13:47:29,831  [Schema               main       DEBUG]  Check of
> > >> existence
> > >> >> of "DailySalesTotalForParty" returned no table
> > >> >>
> > >> >> 13:47:29,831  [Schema               main       DEBUG]  Creating
> table
> > >> >> "DailySalesTotalForParty"
> > >> >>
> > >> >> 13:47:29,831  [Schema               main       DEBUG]  Creating
> table
> > >> >> "DailySalesTotalForParty"
> > >> >>
> > >> >> 13:47:29,831  [Schema               main       DEBUG]  Creating
> table
> > >> >> "DailySalesTotalForParty"
> > >> >>
> > >> >> 13:47:29,832  [Schema               main       DEBUG]  CREATE VIEW
> > >> >> "DailySalesTotalForParty" (   "transactionDate",   "totalAmount"
> > >> >> "fromParty" ) AS SELECT    "Transaction"."transactionDate" ,
> > >> >> SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty"   FROM
> > >> >> "Transaction" GROUP BY  "transactionDate"  ORDER BY
> >  "transactionDate"
> > >> >>
> > >> >> 13:47:29,832  [Schema               main       DEBUG]  CREATE VIEW
> > >> >> "DailySalesTotalForParty" (   "transactionDate",   "totalAmount"
> > >> >> "fromParty" ) AS SELECT    "Transaction"."transactionDate" ,
> > >> >> SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty"   FROM
> > >> >> "Transaction" GROUP BY  "transactionDate"  ORDER BY
> >  "transactionDate"
> > >> >>
> > >> >> 13:47:29,832  [Schema               main       DEBUG]  CREATE VIEW
> > >> >> "DailySalesTotalForParty" (   "transactionDate",   "totalAmount"
> > >> >> "fromParty" ) AS SELECT    "Transaction"."transactionDate" ,
> > >> >> SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty"   FROM
> > >> >> "Transaction" GROUP BY  "transactionDate"  ORDER BY
> >  "transactionDate"
> > >> >>
> > >> >> 13:47:29,833  [Datastore            main       ERROR]  Error thrown
> > >> >> executing CREATE VIEW "DailySalesTotalForParty" (
> > "transactionDate",
> > >> >> "totalAmount"   "fromParty" ) AS SELECT
> > >>  "Transaction"."transactionDate"
> > >> >> ,    SUM("Transaction"."faceValue") AS "totalAmount" ,
> > >> >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty"   FROM
> > >> >> "Transaction" GROUP BY  "transactionDate"  ORDER BY
> >  "transactionDate"
> > >>  :
> > >> >> unexpected token: fromParty required: )
> > >> >>
> > >> >> java.sql.SQLSyntaxErrorException: unexpected token: fromParty
> > >> required: )
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
> > >> >>
> > >> >> at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
> > >> >>
> > >> >>
> > >> >>
> > >> >> And this is the class now
> > >> >>
> > >> >> package dom.todo;
> > >> >>
> > >> >>
> > >> >> import java.math.BigDecimal;
> > >> >>
> > >> >> import java.util.List;
> > >> >>
> > >> >>
> > >> >> import javax.jdo.annotations.Extension;
> > >> >>
> > >> >> import javax.jdo.annotations.IdentityType;
> > >> >>
> > >> >> import javax.jdo.annotations.InheritanceStrategy;
> > >> >>
> > >> >>
> > >> >> import org.joda.time.LocalDate;
> > >> >>
> > >> >>
> > >> >> import org.apache.isis.applib.AbstractViewModel;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Bookmarkable;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.DescribedAs;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Hidden;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Immutable;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Optional;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Render;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Render.Type;
> > >> >>
> > >> >> import org.apache.isis.applib.annotation.Title;
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> /**
> > >> >>
> > >> >> * View model that provides a summary of the sales made on a given
> day
> > >> by
> > >> >> each party
> > >> >>
> > >> >> @javax.jdo.annotations.PersistenceCapable(
> > >> >>
> > >> >> identityType = IdentityType.NONDURABLE,
> > >> >>
> > >> >> table = "DailySalesTotalForParty",
> > >> >>
> > >> >> extensions = {
> > >> >>
> > >> >> @Extension(vendorName = "datanucleus", key = "view-definition",
> > >> >>
> > >> >> value = "CREATE VIEW \"DailySalesTotalForParty\" " +
> > >> >>
> > >> >> "( " +
> > >> >>
> > >> >> "  {this.transactionDate}, " +
> > >> >>
> > >> >> "  {this.fromParty}, " +
> > >> >>
> > >> >> "  {this.transactiontype}, " +
> > >> >>
> > >> >> "  {this.totalAmount} " +
> > >> >>
> > >> >> ") AS " +
> > >> >>
> > >> >> "SELECT " +
> > >> >>
> > >> >> "   \"Tranaction\".\"transactionDate\" , " +
> > >> >>
> > >> >> "   \"Transaction.\".\"fromParty\", " +
> > >> >>
> > >> >> "   \"Transaction.\".\"transactiontype\", " +
> > >> >>
> > >> >> "   SUM(\"Transaction\".\"facevalue\") AS \"totalAmount\", " +
> > >> >>
> > >> >> "  FROM \"Transaction\" " +
> > >> >>
> > >> >> "GROUP BY " +
> > >> >>
> > >> >> " \"fromParty\", " +
> > >> >>
> > >> >> " \"transactionDate\" , " +
> > >> >>
> > >> >> " \"transactiontype\""  +
> > >> >>
> > >> >> "ORDER BY " +                     " \"fromParty\", " +
> > >> >>
> > >> >> " \"transactionDate\" , " +
> > >> >>
> > >> >> " \"transactiontype\"" )
> > >> >>
> > >> >> })
> > >> >>
> > >> >>
> > >> >>
> > >> >> */
> > >> >>
> > >> >> @javax.jdo.annotations.PersistenceCapable(
> > >> >>
> > >> >>    identityType = IdentityType.NONDURABLE,
> > >> >>
> > >> >>    table = "DailySalesTotalForParty",
> > >> >>
> > >> >>    extensions = {
> > >> >>
> > >> >>        @Extension(vendorName = "datanucleus", key =
> > "view-definition",
> > >> >>
> > >> >>            value = "CREATE VIEW \"DailySalesTotalForParty\" " +
> > >> >>
> > >> >>                    "( " +
> > >> >>
> > >> >>                    "  {this.transactionDate}, " +
> > >> >>
> > >> >>                    "  {this.totalAmount} " +
> > >> >>
> > >> >>                    "  {this.fromParty} " +
> > >> >>
> > >> >>                    ") AS " +
> > >> >>
> > >> >>                    "SELECT " +
> > >> >>
> > >> >>                    "   \"Transaction\".\"transactionDate\" , " +
> > >> >>
> > >> >>
> > >> >>                    "   SUM(\"Transaction\".\"faceValue\") AS
> > >> >> \"totalAmount\" ," +
> > >> >>
> > >> >>                    "   \"Transaction\".\"fromParty_Party_ID_OID\"
> AS
> > >> >> \"fromParty\" " +
> > >> >>
> > >> >>                    "  FROM " +
> > >> >>
> > >> >> "   \"Transaction\" " +
> > >> >>
> > >> >>                    "GROUP BY " +
> > >> >>
> > >> >>                    " \"transactionDate\"  " +
> > >> >>
> > >> >>                    "ORDER BY " +
> > >> >>
> > >> >>                    " \"transactionDate\" ")
> > >> >>
> > >> >>    })
> > >> >>
> > >> >> @javax.jdo.annotations.Inheritance(strategy =
> > >> >> InheritanceStrategy.NEW_TABLE)
> > >> >>
> > >> >> @javax.jdo.annotations.Queries( {
> > >> >>
> > >> >> @javax.jdo.annotations.Query(
> > >> >>
> > >> >> name="DailySalesForParty", language="JDOQL",
> > >> >>
> > >> >> value="SELECT FROM dom.todo.DailySalesTotalForParty WHERE fromParty
> > ==
> > >> >> :party ")
> > >> >>
> > >> >> })
> > >> >>
> > >> >> @Bookmarkable
> > >> >>
> > >> >> @Immutable
> > >> >>
> > >> >> public class DailySalesTotalForParty  {
> > >> >>
> > >> >>
> > >> >>        // //////////////////////////////////////
> > >> >>
> > >> >> /**
> > >> >>
> > >> >>    @javax.jdo.annotations.Column(allowsNull = "false")
> > >> >>
> > >> >>    private String fromParty;
> > >> >>
> > >> >>
> > >> >>    /**
> > >> >>
> > >> >>     * Lazily loaded from the {@link #getReference() reference},
> > >> provides
> > >> >> access
> > >> >>
> > >> >>     * to the underlying {@link Property}.
> > >> >>
> > >> >>      @Optional
> > >> >>
> > >> >>    @Title(sequence = "1")
> > >> >>
> > >> >>    public String getFromParty() {
> > >> >>
> > >> >>        return fromParty;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    public void setFromParty(final String party) {
> > >> >>
> > >> >>        this.fromParty = party;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >> */
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >> private java.math.BigInteger fromParty;
> > >> >>
> > >> >> @Optional
> > >> >>
> > >> >> public java.math.BigInteger getFromParty(){
> > >> >>
> > >> >> return this.fromParty;
> > >> >>
> > >> >> }
> > >> >>
> > >> >> public void setFromParty_Party_ID_OID(java.math.BigInteger id ){
> > >> >>
> > >> >> this.fromParty =id;
> > >> >>
> > >> >> }
> > >> >>
> > >> >>
> > >> >> //////////////////////////////////////
> > >> >>
> > >> >>    private LocalDate transactionDate;
> > >> >>
> > >> >>
> > >> >>    @Title(sequence = "2", prepend = " - ")
> > >> >>
> > >> >>    public LocalDate getTransactionDate() {
> > >> >>
> > >> >>        return transactionDate;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    public void setTransactionDate(final LocalDate dueDate) {
> > >> >>
> > >> >>        this.transactionDate = dueDate;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>
> > >> >>    private BigDecimal totalAmount;
> > >> >>
> > >> >>
> > >> >>    public BigDecimal getTotalAmount() {
> > >> >>
> > >> >>        return totalAmount;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    public void setTotalAmount(final BigDecimal total) {
> > >> >>
> > >> >>        this.totalAmount = total;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>
> > >> >>   /** @Render(Type.EAGERLY)
> > >> >>
> > >> >>    public List<Transaction> getTransactions() {
> > >> >>
> > >> >>    return
> transactions.findTransactionForPartyOnDate(getFromParty(),
> > >> >> getTransactionDate());
> > >> >>
> > >> >>    }
> > >> >>
> > >> >> */
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>
> > >> >>    private Partytypes partytypes;
> > >> >>
> > >> >>
> > >> >>    final public void injectPartytypes(final Partytypes partytypes)
> {
> > >> >>
> > >> >>        this.partytypes = partytypes;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    private Transactions transactions;
> > >> >>
> > >> >>
> > >> >>    final public void injectTransactions(final Transactions
> > >> transactions) {
> > >> >>
> > >> >>        this.transactions = transactions;
> > >> >>
> > >> >>    }
> > >> >>
> > >> >>
> > >> >> }
> > >> >>
> > >> >>
> > >> >>
> > >> >> On Mon, Feb 24, 2014 at 11:44 PM, Dan Haywood
> > >> >> <[email protected]>wrote:
> > >> >>
> > >> >> On 24 February 2014 21:38, james agada <[email protected]>
> wrote:
> > >> >>
> > >> >> You are right. It comes from this definition - not sure what is
> wrong
> > >> >>
> > >> >> with
> > >> >>
> > >> >> it
> > >> >>
> > >> >> I can see several issues, some trivial, some probably the cause...
> > >> >>
> > >> >>
> > >> >> If, once you've addressed these, there are still issues, then I
> > suggest
> > >> >> you
> > >> >> strip the class back to a single field, get that working, and then
> > >> build
> > >> >> it
> > >> >> up bit by bit...
> > >> >>
> > >> >> Dan
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> * /* *  Licensed to the Apache Software Foundation (ASF) under one
> *
> > >>  or
> > >> >> more contributor license agreements.  See the NOTICE file *
> > >>  distributed
> > >> >> with this work for additional information *  regarding copyright
> > >> >>
> > >> >> ownership.
> > >> >>
> > >> >> The ASF licenses this file *  to you under the Apache License,
> > Version
> > >> >>
> > >> >> 2.0
> > >> >>
> > >> >> (the *  "License"); you may not use this file except in compliance
> *
> > >> >>
> > >> >> with
> > >> >>
> > >> >> the License.  You may obtain a copy of the License at * *
> > >> >> http://www.apache.org/licenses/LICENSE-2.0
> > >> >> <http://www.apache.org/licenses/LICENSE-2.0> * *  Unless required
> by
> > >> >> applicable law or agreed to in writing, *  software distributed
> under
> > >> the
> > >> >> License is distributed on an *  "AS IS" BASIS, WITHOUT WARRANTIES
> OR
> > >> >> CONDITIONS OF ANY *  KIND, either express or implied.  See the
> > License
> > >> >>
> > >> >> for
> > >> >>
> > >> >> the *  specific language governing permissions and limitations *
> >  under
> > >> >>
> > >> >> the
> > >> >>
> > >> >> License. */*
> > >> >>
> > >> >> (trivial) you probably will want to change the license...
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> * package dom.todo;*
> > >> >>
> > >> >> (trivial) ... and the package
> > >> >>
> > >> >>
> > >> >>
> > >> >> [snip]
> > >> >>
> > >> >>
> > >> >>
> > >> >> /**
> > >> >> * View model that provides a summary of the sales made on a given
> day
> > >> by
> > >> >> each party
> > >> >> */
> > >> >> @javax.jdo.annotations.PersistenceCapable(
> > >> >>    identityType = IdentityType.NONDURABLE,
> > >> >>    table = "DailySalesTotalForParty",
> > >> >>    extensions = {
> > >> >>        @Extension(vendorName = "datanucleus", key =
> > "view-definition",
> > >> >>            value = "CREATE VIEW \"DailySalesTotalForParty\" " +
> > >> >>                    "( " +
> > >> >>                    "  {this.transactionDate}, " +
> > >> >>
> > >> >> *                     "  {this.fromPartyId}, " +*
> > >> >>
> > >> >>
> > >> >> I don't think JDO is clever enough to convert this id into a
> > reference
> > >> to
> > >> >> a
> > >> >> Party (how would it know?)  So you should do what we did
> > >> >> in InvoiceSummaryForPropertyDueDate in Estatio (which is what I
> think
> > >> you
> > >> >> based this on) and make FromParty a derived field that does the
> > lookup
> > >> >> from
> > >> >> a (new) fromPartyId field.
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> *                     "  {this.transactiontype}, " +*
> > >> >>
> > >> >>
> > >> >> there is no 'transactiontype' field on your class ...
> > >> >>
> > >> >>
> > >> >>
> > >> >>                     "  {this.totalAmount} " +
> > >> >>                    ") AS " +
> > >> >>                    "SELECT " +
> > >> >>
> > >> >> *                     "   \"Tranaction\".\"transactiondate\" , " +*
> > >> >>
> > >> >>
> > >> >>
> > >> >> the typo on this line "Tranaction".
> > >> >>
> > >> >> Also, I suggest keeping capitalization consistent, ie
> > transactionDate,
> > >> not
> > >> >> transactiondate.
> > >> >>
> > >> >>
> > >> >>
> > >> >>                     "   \"Transaction.\".\"fromParty\", " +
> > >> >>                    "   \"Transaction.\".\"transactiontype\", "
> > >> >> +
> > >> >>                    "   SUM(\"Transaction\".\"facevalue\") AS
> > >> >> \"totalAmount\", " +
> > >> >>                    "  FROM \"Transaction\" " +
> > >> >>                    "GROUP BY " +
> > >> >>                    " \"Transaction\".\"fromParty\", " +
> > >> >>                    " \"Transaction\".\"transactiondate\" , " +
> > >> >>                    " \"Transaction\".\"transactiontype\""  +
> > >> >>                    "ORDER BY " +                     "
> > >> >> \"Transaction\".\"fromParty\", " +
> > >> >>                    " \"Transaction\".\"transactiondate\" , " +
> > >> >>                    " \"Transaction\".\"transactiontype\"" )
> > >> >>    })
> > >> >> @javax.jdo.annotations.Inheritance(strategy =
> > >> >> InheritanceStrategy.NEW_TABLE)
> > >> >> @javax.jdo.annotations.Queries( {
> > >> >>        @javax.jdo.annotations.Query(
> > >> >>                                name="DailySalesForParty",
> > >> >> language="JDOQL",
> > >> >>                                value="SELECT FROM
> > >> >> dom.todo.DailySalesTotalForParty WHERE fromParty == :party ")
> > >> >>                        })
> > >> >> @Bookmarkable
> > >> >> @Immutable
> > >> >> public class DailySalesTotalForParty  {
> > >> >>
> > >> >>        // //////////////////////////////////////
> > >> >>
> > >> >>
> > >> >>    @javax.jdo.annotations.Column(allowsNull = "false")
> > >> >>    private Party fromParty;
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> *     /**      * Lazily loaded from the {@link #getReference()
> > >> >>
> > >> >> reference},
> > >> >>
> > >> >> provides access      * to the underlying {@link Property}.      */*
> > >> >>
> > >> >>
> > >> >>
> > >> >> This comment is from the Estatio code (but does describe what you
> > >> should
> > >> >> do
> > >> >> to resolve "FromParty").
> > >> >>
> > >> >>
> > >> >>     @Optional
> > >> >>    @Title(sequence = "1")
> > >> >>    public Party getFromParty() {
> > >> >>        return fromParty;
> > >> >>    }
> > >> >>
> > >> >>    public void setFromParty(final Party party) {
> > >> >>        this.fromParty = party;
> > >> >>    }
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>    private LocalDate transactionDate;
> > >> >>
> > >> >>    @Title(sequence = "2", prepend = " - ")
> > >> >>    public LocalDate getTransactionDate() {
> > >> >>        return transactionDate;
> > >> >>    }
> > >> >>
> > >> >>    public void setTransactionDate(final LocalDate dueDate) {
> > >> >>        this.transactionDate = dueDate;
> > >> >>    }
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>    private BigDecimal totalAmount;
> > >> >>
> > >> >>    public BigDecimal getTotalAmount() {
> > >> >>        return totalAmount;
> > >> >>    }
> > >> >>
> > >> >>    public void setTotalAmount(final BigDecimal total) {
> > >> >>        this.totalAmount = total;
> > >> >>    }
> > >> >>
> > >> >>
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>   /** @Render(Type.EAGERLY)
> > >> >>    public List<Transaction> getTransactions() {
> > >> >>        return
> > >> transactions.findTransactionForPartyOnDate(getFromParty(),
> > >> >> getTransactionDate());
> > >> >>    }
> > >> >> **/
> > >> >>    // //////////////////////////////////////
> > >> >>
> > >> >>    private Partytypes partytypes;
> > >> >>
> > >> >>    final public void injectPartytypes(final Partytypes partytypes)
> {
> > >> >>        this.partytypes = partytypes;
> > >> >>    }
> > >> >>
> > >> >>    private Transactions transactions;
> > >> >>
> > >> >>    final public void injectTransactions(final Transactions
> > >> >>
> > >> >> transactions) {
> > >> >>
> > >> >>        this.transactions = transactions;
> > >> >>    }
> > >> >>
> > >> >> }
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >> Óscar Bou Bou
> > >> >> Responsable de Producto
> > >> >> Auditor Jefe de Certificación ISO 27001 en BSI
> > >> >> CISA, CRISC, APMG ISO 20000, ITIL-F
> > >> >>
> > >> >>    902 900 231 / 620 267 520
> > >> >>    http://www.twitter.com/oscarbou
> > >> >>
> > >> >>    http://es.linkedin.com/in/oscarbou
> > >> >>
> > >> >>    http://www.GesConsultor.com <http://www.gesconsultor.com/>
> > >> >>
> > >> >>
> > >> >>
> > >> >> Este mensaje y los ficheros anexos son confidenciales. Los mismos
> > >> >> contienen información reservada que no puede ser difundida. Si
> usted
> > ha
> > >> >> recibido este correo por error, tenga la amabilidad de eliminarlo
> de
> > su
> > >> >> sistema y avisar al remitente mediante reenvío a su dirección
> > >> electrónica;
> > >> >> no deberá copiar el mensaje ni divulgar su contenido a ninguna
> > persona.
> > >> >> Su dirección de correo electrónico junto a sus datos personales
> > constan
> > >> >> en un fichero titularidad de Gesdatos Software, S.L. cuya finalidad
> > es
> > >> la
> > >> >> de mantener el contacto con Ud. Si quiere saber de qué información
> > >> >> disponemos de Ud., modificarla, y en su caso, cancelarla, puede
> > hacerlo
> > >> >> enviando un escrito al efecto, acompañado de una fotocopia de su
> > >> D.N.I. a
> > >> >> la siguiente dirección: Gesdatos Software, S.L. , Paseo de la
> > >> Castellana,
> > >> >> 153 bajo - 28046 (Madrid), y Avda. Cortes Valencianas num. 50, 1ºC
> -
> > >> 46015
> > >> >> (Valencia). Asimismo, es su responsabilidad comprobar que este
> > mensaje
> > >> o
> > >> >> sus archivos adjuntos no contengan virus informáticos, y en caso
> que
> > >> los
> > >> >> tuvieran eliminarlos.
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >>
> > >> >
> > >>
> > >
> > >
> >
>

Reply via email to