开发者

iBatis Silent Failure to Map Columns

When I am mapping a POJO with iBatis such as below:

Person {
    String firstName
    String lastName;
}

To the query:

select firstName, last_name from Person

I am finding that Person.firstName is populated correctly whereas Person.lastName is null - this happens silently. I can introduce a ResultMap to fix the null issue (by translating last_name -> lastName), but I would like iBatis to throw an error when attempting to map rather than doing the best it can silently...

Does anyone know开发者_如何学C how I can do this?

Thanks!


I see several issues.

I'm Blind!

The class Person { String firstName String lastName; } provides exactly 0 visible elements to iBatis because iBatis neither extends Person nor shares the package of Person. Consider the following:

public class Person
{
    private String firstName;
    private String lastName;

    public String getFirstName()
    {
        return firstName;
    }

    public String getLastName()
    {
        return lastName;
    }

    public void setFirstName(final String newValue)
    {
        firstName = newValue;
    }

    public void setLastName(final String newValue)
    {
        lastName = newValue;
    }
}

Seperate and Not Equal

last_name is in no way the same as lastName.
Consider using a result map like the following:

<resultMap id="theIdOfThisMap"
           class="Person">
    <result property="firstName" column="firstName"/>
    <result property="lastName" column="last_name"/>
</resultMap>

<select id="searchForEntities"
        resultMap="theIdOfThisMap">
    select
        firstName,
        last_name
    from
        PERSON
</select>


You can try aliasing with AS:

SELECT firstName, last_name AS lastName
FROM   Person
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜