Thanks - I entered a bug for this at:
http://issues.appfuse.org/browse/APF-419
I tried the suggested changes in this e-mail, but it didn't work for me. The
issue above has a patch with the changes in case someone else wants to try.
Here's the error I get when running tests:
-------------------------------------------------------------------------------
Test set: org.appfuse.dao.UserDaoTest
-------------------------------------------------------------------------------
Tests run: 7, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 0.282 sec
<<< FAILURE!
testGetUser(org.appfuse.dao.UserDaoTest) Time elapsed: 0.126 sec <<< ERROR!
org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation;
uncategorized SQLException for SQL []; SQL state [null]; error code [0];
--- The error occurred in sqlmaps/UserSQL.xml.
--- The error occurred while applying a result map.
--- Check the UserSQL.userRolesResult.
--- Check the result mapping for the 'id' property.
--- Cause: com.ibatis.sqlmap.client.SqlMapException: Error getting nested
result map values for 'roles'. Cause: java.sql.SQLException: Column
'role_id' not found.
Thanks,
Matt
rrc7cz wrote:
>
> Hi Matt,
>
> I managed to get "the iBATIS way" working. Here are the changes if you're
> interested:
>
> Change:
>
> <!--result property="roles" column="username" select="getUserRoles"/-->
>
> to:
>
> <result property="roles" resultMap="UserSQL.userRolesResult"/>
>
> and add:
>
> <resultMap id="userRolesResult" class="role">
> <result property="id" column="ROLE_ID"/>
> <result property="name" column="ROLE_NAME"/>
> <result property="description" column="ROLE_DESCRIPTION"/>
> </resultMap>
>
> Then change getUser/getUserByUsername to support a left outer join with
> the
> "role" table... my test SQL for getUserByUsername (which works) below:
>
>
> <select id="getUserByUsername" resultMap="userResult">
> <![CDATA[
> select U.id, U.username, U.version, U.password, U.first_name,
> U.last_name, U.address, U.city, U.province, U.country, U.postal_code,
> U.email, U.phone_number, U.website, U.password_hint,
> U.account_enabled, U.account_expired, U.account_locked,
> U.credentials_expired,
> R.id as role_id, R.name as role_name, R.description as
> role_description
> from
> (app_user U left outer join user_role X
> on U.id = X.user_id)
> left outer join role R
> on R.id = X.role_id
> where username=#value#
> ]]>
> </select>
>
>
> Then make sure you change:
>
> <resultMap id="userResult" class="user">
>
> to:
>
> <resultMap id="userResult" class="user" groupBy="id">
>
> Finally, you can remove:
>
> List roles =
> getSqlMapClientTemplate().queryForList("getUserRoles", user);
> user.setRoles(new HashSet(roles));
>
> From UserDaoiBatis...
>
>
> Don't know if this is any use to you. Thanks for your response.
>
>
>
>
> On 9/7/06, Matt Raible <[EMAIL PROTECTED]> wrote:
>>
>> On 9/7/06, Robert Campbell <[EMAIL PROTECTED]> wrote:
>> > After a clean install of Appfuse (WebWork w/iBatis, multiple versions)
>> we
>> > have this:
>> >
>> > <!--result property="roles" column="username"
>> > select="getUserRoles"/-->
>> >
>> > in the "UserSQL" iBatis sqlMap, specifically in the "userResult"
>> resultMap.
>> > Why is this commented out. Instead of using this iBatis functionality
>> (found
>> > on page 37 of
>> >
>> http://people.apache.org/dist/ibatis/ibatis.java/docs/iBATIS-SqlMaps-2_en.pdf
>> )
>> > this functionality was instead moved to UserDaoiBatis in the following
>> code:
>> >
>> > List roles =
>> > getSqlMapClientTemplate().queryForList("getUserRoles",
>> > user);
>> > user.setRoles(new HashSet(roles));
>> >
>> > where the user roles are manually added.
>> >
>> > I'm sure there is a good reason for doing it this way, I'm just curious
>> as
>> > to what that reason is.
>> >
>> > Also, I tried to get the iBatis way of doing it to work, and was unable
>> to
>> > get it working...
>>
>> My reason is the same as yours - I couldn't get "the iBATIS way" to
>> work - so I did it manually. ;-)
>>
>> Matt
>>
>> >
>> > Sorry if this has already been answered, I couldn't find a reference to
>> it
>> > in the mailing list.
>> >
>> > Thanks,
>> >
>> > Rob
>> >
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
>
--
View this message in context:
http://www.nabble.com/Question-about-default-Appfuse-getUserRoles-iBatis-mapping-tf2232211s2369.html#a10754585
Sent from the AppFuse - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]