【问题标题】:hibernate ignoring the cascade attribute休眠忽略级联属性
【发布时间】:2012-08-07 20:39:12
【问题描述】:

我在我的项目中使用休眠注释,我已经创建了表,这一切都很好,除了当我检查数据库时它们没有级联,即使我确保将它放在类中。 这是我如何做的一个例子:

public class Item implements java.io.Serializable {

/**
 *
 */
private static final long serialVersionUID = 8271695210797279161L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "IDitem", unique = true, nullable = false)
private int iditem;
@ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "IDDIVISION", nullable = false)
private Division division;
@Column(name = "SIGLE", length = 254)
private String sigleItem;
@Column(name = "DESCRIPTION", length = 254)
private String description;
....
}

我在所有 ManyToOne、OneToMany 和 ManyToMany 情况下都有 cascade = CascadeType.ALL。 我也尝试添加

@OnDelete(action = OnDeleteAction.CASCADE)

@Cascade(org.hibernate.annotations.CascadeType.DELETE_ORPHAN)

就像提到的here,但没有任何改变

你能帮我解决这个问题吗?谢谢!

【问题讨论】:

  • 您好,您使用的是什么数据库?是 MySQL 吗?

标签: database hibernate jakarta-ee annotations cascade


【解决方案1】:

我遇到了同样的问题。也许您忘记将孩子添加到父母的集合中。

division.getItems().add(item); // <-- That was my mistake.
item.setDivision(division);

【讨论】:

    【解决方案2】:

    我认为问题在于您没有使用正确的数据库引擎。 您应该将休眠方言指定为:org.hibernate.dialect.MySQLInnoDBDialect 而不是 MySQLDialect。否则,它将默认为不支持关系的 MyISAM。

    【讨论】:

    • 我更改了它,但它声明会给出错误,例如 août 10, 2012 2:36:47 PM org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement: Unknown table 'participants_audit' août 10, 2012 2:36 :47 PM org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement: SQL Warning: 1051, SQLState: 42S02 août 10, 2012 2:36:47 PM org.hibernate.util.JDBCExceptionReporter logWarnings Avertissement: Unknown table 'quest_ecarts' ...
    • 你有该类的实体和表注释吗?就像@Table(name = 'participants_audit')。否则,是否只有在更改 Hibernate Dialect 后才会出错?
    • 是的,只有当我更改为 MySQLInnoDBDialect 时才会发生这种情况,是的,我在每个类中都有注释 @Entity @Table(name = "name")
    • 能否手动将数据库引擎更改为 InnoDB 以查看是否仍然出现此错误?
    • 当我更改 MySQLInnoDBDialect 时没有创建表,对于 hibernate.hbm2ddl.auto 我将其设置为创建(创建了一个新数据库)
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2019-12-24
    • 2011-12-11
    • 2011-10-18
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    相关资源
    最近更新 更多