Прежде всего, изменение идентификатора - это то, что обычно никто не должен делать. Но если есть какая-то причина для этого, то это невозможно сделать с помощью Hibernate (т.е. и отображаемых классов). Hibernate не будет терпеть этого и повысить ошибку, если вы попытаетесь изменить идентификатор объекта.
Чтобы внести изменения, вы должны использовать собственные запросы. И, вероятно, самый безопасный и простой способ сделать это - позволить БД выполнить эту работу за вас. Вам нужно только определить «on update cascade» действие для столбцов внешнего ключа.
CREATE TABLE Master (id INT, name VARCHAR(20),address VARCHAR(20),Primary key(id));
CREATE TABLE Slave_1 (id INT,s1_id INT,area VARCHAR(20),project VARCHAR(20),primary key(s1_id),Foreign Key (id) references Master(id) **on update cascade**);
CREATE TABLE Slave_2 (id INT,s2_id INT,area VARCHAR(20),project VARCHAR(20),primary key(s2_id),Foreign Key (id) references Master(id) **on update cascade**);
Таким образом, всякий раз, когда вы изменить столбец ID в мастер-таблицы, то он будет автоматически каскадно всех ссылающихся столбцов.
Первичный ключ считается постоянным для времени жизни Вселенной или, по крайней мере, для срока службы приложения. Никогда не должно быть оснований обновлять первичный ключ какого-либо объекта! –