In fact I set it to be able to get access to some information that are related to the detail, for example variable name when getting all variable updates. When I removed them and rerun the tests, following failed:
Test set: org.jbpm.test.query.HistoryDetailQueryTest
-------------------------------------------------------------------------------
Tests run: 9, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.328 sec <<< FAILURE!
testHistoryVariable(org.jbpm.test.query.HistoryDetailQueryTest) Time elapsed: 0.047 sec <<< ERROR!
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:86)
at org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyInitializer.java:140)
at org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(JavassistLazyInitializer.java:190)
at org.jbpm.pvm.internal.history.model.HistoryVariableImpl_$$_javassist_39.getVariableName(HistoryVariableImpl_$$_javassist_39.java)
at org.jbpm.pvm.internal.history.model.HistoryVariableUpdateImpl.toString(HistoryVariableUpdateImpl.java:49)
at org.jbpm.test.query.HistoryDetailQueryTest.testHistoryVariable(HistoryDetailQueryTest.java:186)
After additional review it seems like it is required mainly for variable stuff since it uses persistent fields (to get variable name). Most likely is not required for others, the API is not too verbose in that matter.