2017-02-16 2 views
0

Ich habe zwei Tabellen Autor, Bücher. Und POJOs, .hbm.xml für jede der Tabellen. Ich habe eine Select-Abfrage geschrieben, die mir einige Details aus beiden Tabellen liefert.Arraylist (JavaObect) Iteration in Geschwindigkeit Vorlage

select A.id.BookNum,A.id.AuthorName,B.id.DatePublished,B.id.Price 
,B.id.Condition,B.id.BookBought from Author A, Book B where 
B.id.Condition == 'NEW' and A.id.BookNum = A.id.BookNum order by 
A.id.AuthorName; 

Ich habe die Ergebnisse, und es in ArrayList gespeichert. UnApprovedBookList Wenn ich versuche, dies in Geschwindigkeit Vorlage anzuzeigen, kann ich dies nicht iterieren. Ich habe meine POJOs als Autor, Buch, das getter()/Setter() für AuthorId und BookId beziehungsweise AuthorId, BookId hat, das die Getter/setter für Felder darin hat.

public class Book implements java.io.Serializable { 
     private static final long serialVersionUID = 1L; 
     private BookId id; 
     public Book(){ } 
     public Book (BookId id){this.id = id;} 
     public BookId getId(){return id;} 
     public void setId(BookId id) {this.id = id;} 
    } 

und meine BookID mit Getter/Setter für die Felder in es, im Grunde die alle Spalten Tabelle.

public class BookId implements java.io.Serializable { 
     private static final long serialVersionUID = 1L; 
     private BookNum; 
     public BookId(){ } 
     public String getBookNumid() {return BookNum;} 
     public void setBookNum(String bookNum) {bookNum= bookNum;} 
     } 

Und mein hbm wie folgt:

<hibernate-mapping> 
     <class name="com.bookStore.hibernate.dao.Book" table="BOOK" schema="ORG"> 
      <composite-id name="id" class="com.bookStore.hibernate.dao.BookId"> 
       <key-property name="BookNum" type="string"> 
        <column name="SH_BOOK_NUM" length="17" /> 
       </key-property> 
       <key-property name="DatePublished" type="date"> 
        <column name="SH_DATE_PUB" length="13" /> 
       </key-property> 
       <key-property name="Price" type="int"> 
        <column name="SH_PRICE" length="5" /> 
       </key-property> 
       <key-property name="Condition" type="string"> 
        <column name="SH_CONDITION" length="10" /> 
       </key-property> 
       <key-property name="BookBought " type="date"> 
        <column name="SH_BOOK_BOUGHT" length="13" /> 
       </key-property> 
      </composite-id> 
     </class> 
    </hibernate-mapping> 

Und ich finde es schwierig, wenn ich versuche, in Geschwindigkeit zu durchlaufen und Display. wie unter meinem Code-Schnipsel.

 #foreach($unApprovedBook in $unApprovedBookList) 
      <input type="text" id="bookNum" value="$unApprovedBook.getId().getBookNumid()"> 
     #set($i = $i + 1) 

Dadurch ich sehe $ unApprovedBook.getId() getBookNumid() in UI , wenn ich den Code ändern zu:

#foreach($unApprovedBook in $unApprovedBookList) 
<input type="text" id="bookNum" value="$unApprovedBook"> 
#set($i = $i + 1) 

Ich sehe: [Ljava.lang.Object; @ 3160316 in UI. Bitte lassen Sie mich wissen, wie ich mein Java-Objekt in Velocity iterieren kann.

[1]: https://i.stack.imgur.com/eBrYQ.jpg 

Antwort

0

diese Weise versuchen:

Sie Eigenschaft Ausdruck verwenden sollte $unApprovedBook.id.BookNum. Versuchen Sie, den Java-Namenskonventionen zu folgen.

<input type="text" id="bookNum" value="${unApprovedBook.id.BookNum}"> 
+0

Es funktioniert auch nicht. Ich habe meinen Code geändert in: , und die Ausgabe ist: $ unApproved.id.IProflKey – BrinzN

+0

Dies ist technisch wiederholende Arraylist der Liste Objekt – BrinzN

+0

In Velocity können Sie Informationen über Objekte erhalten, indem Sie ihre Java-Klasse anzeigen: '$ unApprovedBook.class.name'; Dies ist oft sehr nützlich, wenn Sie nicht sicher sind, was passiert. –

Verwandte Themen