PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Hibernar 'Inverse' no arquivo de mapeamento


Inverse apenas decide qual entidade em um relacionamento é responsável por atualizar o banco de dados para refletir a associação.

Suponha uma associação bidirecional de um para muitos. Existem duas classes no código A e B, A contém um conjunto de B, B mantém uma referência a A. No nível do banco de dados, há apenas uma chave estrangeira a ser atualizada, a tabela de B contém uma coluna para chave primária de A.

Nesse caso, suponha que colocamos o inverso =true no lado definido. Isso implica que apenas adicionar uma entidade ao conjunto não acionará a atualização da chave estrangeira. Porque a responsabilidade de atualizar a chave estrangeira é de B. Portanto, adicionar um objeto B ao conjunto que A mantém não é suficiente para atualizar a coluna de chave estrangeira. objectA.addToSetOfB(objectB) não afetará a chave estrangeira.

Somente quando B recebe uma referência a A, a chave estrangeira na tabela para B será atualizada. Portanto, objectB.setA(objectA) certamente atualizará a chave estrangeira e realmente configurará o relacionamento.

Eu acho que o mesmo conceito vai levar para muitos relacionamentos também.