0

私は Hibernate 4.1.0.Final、Spring 3.1.1.RELEASE、および MySQL 5.5 を使用しています。私はこのエンティティを持っています...

@GenericGenerator(name = "uuid-strategy", strategy = "uuid.hex")
@Entity
@Table(name = "user")
@Cacheable
public class User implements Serializable
{
    …    
    @OneToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "user_contracts",
              joinColumns = @JoinColumn(name = "user_id"),
              inverseJoinColumns = @JoinColumn(name = "contract_id"))
    /* List of contracts for which this user has registered. */
    private Set<Contract> contracts;

「contracts」フィールドに注釈を付けて、Contract オブジェクトが削除された場合に結合テーブル (「user_contracts」) 内の対応するレコードも削除され、ユーザー エンティティが適切に更新されるようにするにはどうすればよいですか? フィールドに MySQL テーブル宣言を反映させたいのですが…</p>

CREATE TABLE `user_contracts` (
  `USER_ID` varchar(32) COLLATE utf8_bin NOT NULL,
  `CONTRACT_ID` varchar(32) COLLATE utf8_bin NOT NULL,
  UNIQUE KEY `UK_USER_CONTRACTS` (`USER_ID`,`CONTRACT_ID`),
  KEY `FK2_USER_CONTRACTS` (`CONTRACT_ID`),
  CONSTRAINT `FK1_USER_CONTRACTS` FOREIGN KEY (`USER_ID`) REFERENCES `user` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION,
  CONSTRAINT `FK2_USER_CONTRACTS` FOREIGN KEY (`CONTRACT_ID`) REFERENCES `contract` (`ID`) ON DELETE CASCADE ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

ありがとう - デイブ

4

1 に答える 1

0

試す

@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.DELETE)

于 2013-01-16T18:09:35.157 に答える