Wouldn't it be because of the duplicate serverId? The approach using RowMapper I confess that I know little, I wanted to help better
public class ServerMessageRowMapper implements RowMapper<ServerMessage> {
@Override
public ServerMessage mapRow(ResultSet rs, int rowNum) throws SQLException {
ServerMessage serverMessage = new ServerMessage();
serverMessage.setId(rs.getInt("id"));
serverMessage.setSenderId(rs.getInt("sender_id"));
serverMessage.setServerId(rs.getInt("server_id"));
serverMessage.setContent(rs.getString("content"));
serverMessage.setCreatedAt(rs.getDate("created_at"));
return serverMessage;
}
}