I think whats happening here is Hibernate is expecting UserRole itself to act as an entity. Maybe entity isn't the right word, anyhow you don't have to create a class for a joining table, hibernate will handle that for you. If you do create a class for a joining table, hibernate thinks its a real class. By declaring a OneToMany relationship to it. Hibernate 'prefers' creating joining tables to any non-one-to-one relationships so if its generating your database it may be doing just that.
You should only have to create classes for User and Role, you will use UserRole in your mapping file but explicitly creating a class for it is probably making your tables generate in that strange way.
Cheers
Edit: I realized you're using annotations... I'll see if I can pull up an example for you.
Maybe this will help
http://tadtech.blogspot.com/2007/09/hib ... -join.html