ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Tom B." <tom.bloomfi...@gmail.com>
Subject Re: Nested Beans not populating using SQL alias.
Date Mon, 18 Jul 2005 15:39:32 GMT
Your solution would work, provided that the getters and setters are in
the base class "Foo".   The methods I'm selecting into are nested, not
simple properties, in the class "Bar".

Here's a better example:

<select id="test" resultClass="Foo">
SELECT
   baz1 AS "bar.baz1",
   baz2 AS "bar.baz2",
   column1 AS "test"
FROM
   foo
</select>

class Foo{
 private Bar bar;
 private String test;

 Bar getBar() {
   if(this.bar == null) {
     this.bar = new Bar();
   }
   return bar;
 }
 void setBar(Bar bar) {
   this.bar = bar;
 }

 void setTest(String test) {
   this.test = test;
 }

 String getTest() {
   return this.test;
 }
}

....
class Bar{
  private String baz1, baz2;

  String getBaz1() {
    return baz1;
  }
  void setBaz1(String baz1) {
     this.baz1= baz1;
   }
  String getBaz2() {
    return baz2;
  }
  void setBaz2(String baz2) {
    this.baz2 = baz2;
  }
}
....

In this example, member "test" in class "Foo" is set correctly...
however, the values of nested member "baz1" and "baz2" in the bean
"Bar" are not set.  If I use a Map instead of relying on the SQL
alias:

<result property="test" column="column1" />
<result property="bar.baz1" column="baz1" />
<result property="bar.baz2" column="baz2" />

 all values are set correctly, even the nested ones.

This is my hang-up... let me know if there is a workaround or I'm
missing something.

Tom

Mime
View raw message