Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

hibernate, join table with additional column

I want to save severel Roles for a User. For that purpose I have created a Jointable user2role,which assigns every user id an role id. So far everything works finely. Additionally, I want to save some columns in the join table, for example the the last last_modifying_date (see table defintion below). I dont want to create an additional controller for user2role. I want to solve it by extending the current mapping definiton. Thank you for your help!

The mapping file of User (User.hbm.xml) contains following definition:

    <set name="roles" cascade="all" table="user2role" lazy="false">
        <key column="userID" />
        <many-to-many class="domain.Role"
            column="roleID" />
    </set>

The Table user2role looks like:

    CREATE TABLE `user2role` (
  `userID` int(11) NOT NULL DEFAULT '0',
  `roleID` int(11) NOT NULL DEFAULT '0',
  `modifying_user_db` varchar(50) DEFAULT NULL,
  `modifying_user_appl` varchar(50) DEFAULT NULL,
  `last_modifying_date` datetime DEFAULT NULL,
  PRIMARY KEY (`userID`,`roleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Verknüpfung User zu Berechtigungsrolle';
like image 551
Volkan Trabzon Avatar asked Mar 21 '16 10:03

Volkan Trabzon


1 Answers

Refer the following:

http://www.mkyong.com/hibernate/hibernate-many-to-many-example-join-table-extra-column-annotation/

http://www.codejava.net/frameworks/hibernate/hibernate-many-to-many-association-with-extra-columns-in-join-table-example

The question is also answered in StackOverflow itself:

Mapping many-to-many association table with extra column(s)

like image 62
ajoshi Avatar answered Nov 07 '22 20:11

ajoshi