I'm having no problems using Struts w/ Hibernate. A DAO layer is nice, in which case the two don't necessarily interact with other directly. A typical request might go like so:
1. Create and validate your Struts ActionForm instance
2. Your Struts Action populates one of your persistance classes from the ActionForm by using BeanUtils.copyProperties (from commons-beanutils.jar).
3. The Struts Action hands off the persistance class to a DAO, which uses HQL, Criteria API, etc., to interact with Hibernate.
This is just an example, your architecture could be simpler or more complex.
Also, take a look at the Thread Local Session pattern
http://www.hibernate.org/42.html, and the HibernateFilter
http://www.hibernate.org/43.html to manage creating a Session for each request. Also, there is an example of a Struts plugin to handle creating a SessionFactory for the application on startup:
http://www.hibernate.org/105.html