2012-03-15 161 views
0

我正在使用MyBatis做一個簡單的選擇。Mybatis選擇嵌套對象

假設我們有以下類:

class Book { 
    private String bookName; 

    public Book(String bookName){ 
     this.bookName = bookName; 
    } 

    public String getBookName(){ 
     return bookName; 
    } 
} 


class Student { 
    private String studentName; 
    private Book book; 

    public Student(){} 

    // getters and setters 
} 

我有一個返回Student對象的方法的註釋。

@Select("Select studentName, book from Students") 

我的問題是,這本書總是空。我假設MyBatis將調用具有該JDBC類型(在此情況下爲String)的構造函數來填充書籍。我錯過了什麼或做錯了什麼?

回答

0

一種選擇是

使用@ConstructorArgs註釋來顯式調用構造函數方法。

@Select("Select studentName, book from Students") 
@ConstructorArgs(value = { 
@Arg(column = "studentName", javaType=java.lang.String.class), 
@Arg(column = "book", javaType = java.lang.String.class) 
}) 

並將它們傳遞給Student構造函數,該構造函數調用Book構造函數。