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; > } > > } > >
