Actually, you can do many to many associations, including with extra columns.
First, many to many mapping is a Hibernate feature. You'll find it in the Hibernate (3.5.1-final) Reference in the "Mapping associations" section of chapter 1. Just search for "many-to-many" (in the PDF file that I have, section "1.2.2. A unidirectional Set-based association" is what you're looking for - it has an example on pages 14 and 14 just like yours). So maybe I am confused as to what the other responders are referring to when they say that you need to use two many to one mappings, since the aforementioned example also has three tables.
Second, for an example of using additional columns, see this tutorial on Mkyong.com
The thing to keep in mind, and that the tutorial doesn't make explicit, is that the table that stores the association info normally has NO extra columns, which implicitly makes the primary key a composite of the participating entities's keys: the key in UserGroup combines user.id and group.id. So you need the @AssociationOverride tag to specify which of the fields make up the key since if you didn't, Hibernate would use all fields as
Whether it is good practice or not is a different issue, as is whether or not it will improve performance when compared with having a separate entity (e.g. UserGroupInfo, which would be a fourth one in your case) of which the sole purpose is to hold the extra columns (UserGroupInfo will then have to reuse UserGroup's id).