From the Javadoc for ResultSet (always a good place to start):
The ResultSet interface provides getter methods (getBoolean, getLong, and so on) for retrieving column values from the current row. Values can be retrieved using either the index number of the column or the name of the column. In general, using the column index will be more efficient. Columns are numbered from 1. For maximum portability, result set columns within each row should be read in left-to-right order, and each column should be read only once.
Basically it's saying it's not guaranteed to work, perhaps because it's not an explicit requirement of the
JDBC spec.
My stock response to queries such as, "I'm doing something that I probably shouldn't be and it doesn't work or behaves strangely", is "Don't do that then!"
Best practice is to call the method once and store the returned value in a variable if you need it again. As it says, do it in order too; that was a new one on me!
Jules