【问题标题】:What is the appropriate annotation for a cascading delete on a JoinTable?JoinTable 上的级联删除的适当注释是什么?
【发布时间】:2012-12-31 00:32:59
【问题描述】:

我正在使用 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 表声明...

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

谢谢,- 戴夫

【问题讨论】:

  • 删除了我的答案,希望其他人可以帮助你。

标签: hibernate annotations cascading-deletes jointable


【解决方案1】:

试试

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多