Return-Path: X-Original-To: apmail-isis-users-archive@www.apache.org Delivered-To: apmail-isis-users-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id CDF2810FEA for ; Wed, 26 Feb 2014 12:38:46 +0000 (UTC) Received: (qmail 12073 invoked by uid 500); 26 Feb 2014 12:38:46 -0000 Delivered-To: apmail-isis-users-archive@isis.apache.org Received: (qmail 11965 invoked by uid 500); 26 Feb 2014 12:38:41 -0000 Mailing-List: contact users-help@isis.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@isis.apache.org Delivered-To: mailing list users@isis.apache.org Received: (qmail 11953 invoked by uid 99); 26 Feb 2014 12:38:39 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Feb 2014 12:38:39 +0000 X-ASF-Spam-Status: No, hits=1.5 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: domain of okwuiagada@gmail.com designates 209.85.213.49 as permitted sender) Received: from [209.85.213.49] (HELO mail-yh0-f49.google.com) (209.85.213.49) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 26 Feb 2014 12:38:34 +0000 Received: by mail-yh0-f49.google.com with SMTP id f10so214076yha.8 for ; Wed, 26 Feb 2014 04:38:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=83x3pHxjc3DTg+t2sOAQXf6WLLF9uiKa2q/dXu4VCFI=; b=aoc0sDcYC4JO1lyb5szd3GdLY4Ztx8hGcQVveKcVqj5qklgf7KQqKwt6MLdP9edUFw HbMEQVIOPMvOJVoq96EuFb/vbDEvNYvJ77LIR6+dJbpv8p6KbJww665sX0PTOEihCOhp JAzC7RqH5hIgAI0UxE2Qm6rHeWhTig0UrTLWf56VMtV7pDlV4hz/Kt4xqPaJscbSAkKl NbCV3hfGfqaMH+WiTmRSYdeO8RFuJ8JWb5mrtUA/oAX+sVPaRMx1PzT2MMvMzhVamkJo uoW84Sqo2FVIl2SRc9oEn9BE7dNh0mVvbMjtAXgz86kgU6gHtT2pB87knHIPWX0/kkTD xNDw== MIME-Version: 1.0 X-Received: by 10.236.108.202 with SMTP id q50mr627605yhg.146.1393418293943; Wed, 26 Feb 2014 04:38:13 -0800 (PST) Received: by 10.170.218.132 with HTTP; Wed, 26 Feb 2014 04:38:13 -0800 (PST) In-Reply-To: References: Date: Wed, 26 Feb 2014 13:38:13 +0100 Message-ID: Subject: Re: what could be causing this kind of error From: james agada To: "users@isis.apache.org" Content-Type: multipart/alternative; boundary=20cf303b433d6f24c704f34e7af4 X-Virus-Checked: Checked by ClamAV on apache.org --20cf303b433d6f24c704f34e7af4 Content-Type: text/plain; charset=ISO-8859-1 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 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 wrote: > On 24 February 2014 21:38, james agada 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 > > * * 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 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; > > } > > > > } > > > > > --20cf303b433d6f24c704f34e7af4--