0
select 
                ID,NAME,SEX,RESIDENCE,EMAIL,MOBILE,PASSWORD,MOOD,BIRTHDAY,AVATAR,TYPE,MONEY
             from 
                user 
             where 
                ID in
                    (select USER2 as id from friend where USER1=#userId# and STATUS= 1 union select user1 as id from friend where user2 = #userId#  )



select 
                ID,NAME,SEX,RESIDENCE,EMAIL,MOBILE,PASSWORD,MOOD,BIRTHDAY,AVATAR,TYPE,MONEY
             from 
                user 
             where 
                ID in
                    (select USER2 as id from friend where USER1=#userId# and STATUS= 1)

2番目のSQLを使用する場合は問題ありませんが、最初に使用する場合はエラーが発生します.2つのSQLは同じパラメーターを持っているため、パラメーターは問題ないと思います

org.springframework.jdbc.UncategorizedSQLException: SqlMapClient operation; uncategorized SQLException for SQL []; SQL state [null]; error code [0];   
--- The error occurred in com/bit/hapin/dao/activity/activity.xml.  
--- The error occurred while applying a parameter map.  
--- Check the getInviteFriendForActivity-InlineParameterMap.  
--- Check the parameter mapping for the 'userId' property.  
--- Cause: java.lang.ArrayIndexOutOfBoundsException: 1; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in com/bit/hapin/dao/activity/activity.xml.  
--- The error occurred while applying a parameter map.  
--- Check the getInviteFriendForActivity-InlineParameterMap.  
--- Check the parameter mapping for the 'userId' property.  
--- Cause: java.lang.ArrayIndexOutOfBoundsException: 1
    at org.springframework.jdbc.support.SQLStateSQLExceptionTranslator.translate(SQLStateSQLExceptionTranslator.java:121)
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:322)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.executeWithListResult(SqlMapClientTemplate.java:249)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:296)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.queryForList(SqlMapClientTemplate.java:290)
    at com.bit.hapin.dao.activity.ActivityDAOImpl.getInviteFriendForActivity(ActivityDAOImpl.java:51)

だから私は何をすべきですか?

4

1 に答える 1

0

最初のクエリでは問題ありません。しかし、

最初のクエリで:

select USER2 as id from friend ..... select user1 as id from friend ....

テーブルfriendにはUSER2user1列があります。その場合は、テーブル内の列 (USER2、user1) を確認してfriendください。プログラムの要件はわかりませんが、テーブルを使用しようunionとしているため、2番目のクエリ(投稿内)で十分です。single/same

参照することもできます:同じテーブルのユニオン

于 2012-11-11T09:26:38.470 に答える