My vote is that this is a bug and it wasn't a conscious deviation from the spec. In the final version of the JPA-2.0 spec this property is defined as "javax.persistence.query.timeout // time in milliseconds". If you dig a bit deeper into spec history and look at an early draft version[1] you will find the following:
javax.persistence.lock.timeout // time in seconds
Open Issue: Whether units should be seconds or milliseconds
I suspect what happened is that this hint was implemented prior to the spec coming to a decision on seconds vs milliseconds. Once the decision was made to use milliseconds, the runtime was never updated. While it is true that JDBC under the covers doesn't handle milliseconds, I don't think that drove the decision of this implementation. (Someone please correct me if I'm wrong)
Now that we understand how we got to where we are, what to do? In my eyes this is a spec compliance issue vs existing user situation. My vote is to update the hint to (only on trunk, leave existing branches/releases alone) adhere to the spec and add a property that will allow existing users to get the old behavior back.
Thoughts?
Thanks,
Rick