ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Clinton Begin <clinton.be...@gmail.com>
Subject Re: Problem with id mapping to IDENTITY in HSQLDB
Date Thu, 22 Apr 2010 13:18:35 GMT
There's currently no way to use an xml result map from an annotation.
Remember, ibatis is not an ORM, so you have to pair result maps with
statements each time, and currently the entire pair must be xml or
annotations.

On 2010-04-22, Andrea Selva <selva.andre@gmail.com> wrote:
> Hi list,
> i've a trouble with IDENTITY in hsqldb and id attribute in a resulMap:
>
> --- Activity DDL ----
> DROP TABLE Activity;
>
> CREATE TABLE Activity (
>     idActivity IDENTITY,
>     name varchar(30) not null,
>     description varchar(100) null,
>     constraint pk_activity primary key (idActivity)
> );
>
> ----ResultMap ---------
> <resultMap id="activityResultMap" type="Activity">
>     <id property="id" column="idActivity" />
>     <result property="name" column="name" />
>     <result property="description" column="description" />
> </resultMap>
>
> NB Activity is an alias for the class i map
>
> --- This is my mapper annotated interface -----
> public interface ActivityMapper {
>     @Select("SELECT * FROM Activity")
>     List<Activity> listAll();
> }
>
>
> --- My domain class ----
> public class Activity implements Serializable {
>     private static final long serialVersionUID = -4735861071294335763L;
>     private int id = -55; //only for test
>     private String name;
>     private String description;
>
>     public Activity(String name, String description) {
>         this.name = name;
>         this.description = description;
>     }
>
>     public Activity() {}
>
>     public int getId() {
>         return id;
>     }
>
>     public String getDescription() {
>         return description;
>     }
>
>     public String getName() {
>         return name;
>     }
>
>     public int getDays() {
>         return days;
>     }
> }
>
>
> --- This is the test incriminate test code ---
>
> @Test
>     public void testAllActivities() throws SQLException, IOException {
>         Activity activity1 = new Activity("Fake Name", "Fake description");
>         Activity activity2 = new Activity("Fake Name 2", "Second fake
> description");
>         IActivityDAO dao = new IBatisActivityDAO();
>         dao.addNewActivity(activity1);
>         dao.addNewActivity(activity2);
>
>         DBUtils.printQueryResults("SELECT * FROM Activity");
>
>         Reader reader =
> Resources.getResourceAsReader("org/dna/metronomo/persistence/configuration.xml");
>         SqlSessionFactory m_sqlSessionFactory = new
> SqlSessionFactoryBuilder().build(reader);
>         ActivityMapper mapper =
> m_sqlSessionFactory.openSession().getMapper(ActivityMapper.class);
>         List<Activity> activities = mapper.listAll();
>         assertEquals(2, activities.size());
>         assertEquals(activity1.getName(), activities.get(0).getName());
>         assertEquals(0, activities.get(0).getId());
>         assertEquals(activity2.getName(), activities.get(1).getName());
>         assertEquals(1, activities.get(1).getId());
>     }
>
> When I load the list of activities I find correctly populated all attributes
> except the key attribute, the id, i discover that the mapper doesn't fill it
> with the correct value from DB (a SELECT on the DB shot that the data are
> presents) but put the -55 default value that I set.
> I can't understand why IBatis 3 doesn't corretly map the key IDENTITY column
> to the java attribute.
> The iBAtis3 svn rev I use is r928229.
> Many thanks in advance for any usefull hint.
>  Best regards
>   Andrea Selva
>

-- 
Sent from my mobile device

---------------------------------------------------------------------
To unsubscribe, e-mail: user-java-unsubscribe@ibatis.apache.org
For additional commands, e-mail: user-java-help@ibatis.apache.org


Mime
View raw message