ここに私の問題があります:
私は3つのテーブルを持っています:
ROLE
: RID ,NAMECLIENT
: お客様 ID、名前USER
: UID、RID、CID、ユーザー名、パスワード
以下は、私が書いたSQLステートメントです。
SELECT USER.UID,USERNAME,PASSWORD,ROLE.NAME, ROLE.RID
FROM USER
INNER JOIN ROLE ON USER.RID=ROLE.RID
WHERE CID=1;
上記のステートメントは、実際には 2 行あるはずなのに、1 行しか返していません。
何が機能していないのかわかりません。
次の操作を行うと、2 つの行が取得されます。 SELECT * FROM USER WHERE CID =1;
私は春のフレームワークを使用していて、RowMapperも実装していることに注意してください。以下は、dbase に従ってフィールド名を使用した実際のコードです。
public List<User> viewUserClient(int client_id) {
String sql =
"SELECT USER.ID,USERNAME,PASSWORD,ACTIVE,ROLE.NAME, ROLE.ID FROM USER INNER JOIN ROLE ON USER.ROLE_ID=ROLE.ID WHERE CLIENT_ID=?";
List<User> users = this.getJdbcTemplate().query(sql, new Object[] { client_id }, new UserClientRowMapper());
return users;
}
private static final class UserClientRowMapper implements RowMapper<User> {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
Client client = new Client();
Role role = new Role();
user.setID(rs.getInt("ID"));
user.setUSERNAME(rs.getString("USERNAME"));
user.setPASSWORD(rs.getString("PASSWORD"));
user.setACTIVE(rs.getBoolean("ACTIVE"));
role.setNAME(rs.getString("NAME"));
role.setID(rs.getInt("ROLE.ID"));
client.setId(rs.getInt("id"));
client.setName(rs.getString("name"));
user.setRole(role);
user.setClient(client);
return user;
}
}
よろしくお願いします。