标签: cascade

我的'ON DELETE CASCADE'不起作用

我有3个表:lt_hdefaults,lt_hperiodslt_hrules.在lt_hdefaults,特定年份的房产有一行.在lt_hperiods表中,可能有不止一个时期,称他们为季节.在lt_hrules表格中,每个时期可能有多个规则.现在,我无法工作:当用户删除记录时lt_hdefaults,应删除与删除记录相关的其他数据lt_hperiodslt_hrules表.我试图通过使用来实现这一目标

FOREIGN KEY (lt_year,lt_id) REFERENCES lt_hdefaults(lt_year,lt_id) ON DELETE CASCADE
Run Code Online (Sandbox Code Playgroud)

但是,它不起作用.我知道它看起来很长但不是很复杂.如果有人有任何想法,我将不胜感激.我知道如何使用mysql,但我不是专家.非常感谢.

以下样本:

CREATE TABLE IF NOT EXISTS lt_hdefaults (
  lt_year year(4) NOT NULL DEFAULT '0000',
  lt_id int(255) NOT NULL DEFAULT '0',
  period_name varchar(45) NOT NULL DEFAULT 'Default',
  min_stay int(10) NOT NULL DEFAULT '1',
  max_stay int(10) NOT NULL,
  weekly_rate float(10,2) NOT NULL,
  nightly_rate float(10,2) NOT NULL,
  PRIMARY KEY (lt_year,lt_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;    

CREATE …
Run Code Online (Sandbox Code Playgroud)

mysql cascade cascading-deletes

1
推荐指数
1
解决办法
1202
查看次数

关于删除级联概念的MySql?

我想弄清楚级联删除是如何工作的.我知道一般概念,但不知道它的细节.

我有3个表(a)|| --- | <(B)> o --- ||(C)

表A:

Aid
Tag
Run Code Online (Sandbox Code Playgroud)

表B:

Aid (f)
Cid (F)
Run Code Online (Sandbox Code Playgroud)

表C:

Cid
Other
Run Code Online (Sandbox Code Playgroud)
  • 表A中的一行必须至少有一个对表c的引用,否则应删除它.
  • 仅当表C尝试创建不存在的标记时,才会在表A中创建一行.如果表C删除了该标记,并且表C中没有其他行引用该标记,则应删除该标记.如果表C中的另一行引用该标记,则不应删除该标记.

如果我将表B [Aid]设置为删除级联,它会:

  1. 如果删除表A中的标记,则删除表B中的所有链接
  2. 我从属于tagz的表B中删除一行.表B中还有另一行引用了tagz.删除是否会导致tagz被删除,或者tagz会在任何行引用时保留吗?

mysql cascade

1
推荐指数
1
解决办法
4300
查看次数

Cascade.ALL来自非拥有实体方面

我在Item和Category之间有@ManyToMany(双向)关系.

class Item {
  @ManyToMany(cascade = CascadeType.ALL)
  Collection<Category> categories=new ArrayList<Category>();
}

class Category {
  @ManyToMany(mappedBy="categories", cascade = CascadeType.ALL)
  Collection<Item> items=new ArrayList<Item>();
}
Run Code Online (Sandbox Code Playgroud)

我在两者上都指定了CascadeType.ALL.物品是物主.将使用第三个表(Item_Category)映射ManyToMany关系

  1. 当我创建一个项目并向该项目添加类别并保存该项目时,该项目中的所有类别都会保持不变.此外,还在连接表中生成必要的条目(如预期的那样).

  2. 但是,当我创建一个类别并向其添加新项目并保存该类别时,我看到必须在项目和类别表中创建条目,但在Item_Category连接表中没有插入.因此,无法正确创建关联.

这是预期的行为吗?这意味着只有当我们在Item中添加类别时,关联表才会有条目,因为Item是关系的所有者?

hibernate cascade associations

1
推荐指数
1
解决办法
1354
查看次数

如何计算extjs树中节点的叶数?

我有一个在extjs 4.x中生成的树,我需要计算任何节点,即该节点的叶子数.我的意思是叶子的总数,这也意味着该节点的"子节点"的叶子.我看到有一种级联方法,但我无法使用它.

javascript tree extjs cascade nodes

1
推荐指数
1
解决办法
2225
查看次数

删除实体时我有什么不对?MySQLIntegrityConstraintViolationException

我正在寻求帮助,因为当我尝试删除具有OneToMany关系的实体时,我在使用List加载页面时遇到此错误:

MySQLIntegrityConstraintViolationException:无法删除或更新父行:外键约束失败

当然我知道它与Cascade删除孩子有关,但我不知道我做错了.

相对于与儿童的关系的父实体部分:

@Entity
@Table(name="PARENT")
public class Parent implements Serializable {
...
@OneToMany (mappedBy = "parent", orphanRemoval = true, cascade={CascadeType.ALL}, targetEntity = Children.class)
@JoinColumn(name = "parent_id")
private List <Children> children;
...
}
Run Code Online (Sandbox Code Playgroud)

子实体部分相对于与父母的关系:

@Entity
@Table(name = "CHILDREN")
public class Children implements Serializable {
...
@ManyToOne(targetEntity = Parent.class, cascade = CascadeType.ALL)
@JoinColumn
private Country country;
Run Code Online (Sandbox Code Playgroud)

JSF按钮删除实体:

<p:button onmouseup="#{parentBean.remove(parent)}" value="Delete" />
Run Code Online (Sandbox Code Playgroud)

豆:

getEntityManager().remove(getEntityManager().merge(parent));
Run Code Online (Sandbox Code Playgroud)

例外:

Caused by: javax.persistence.PersistenceException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot delete or …
Run Code Online (Sandbox Code Playgroud)

sql jpa cascade exception java-ee

1
推荐指数
1
解决办法
4889
查看次数

为什么手动定义的Spring Data JPA删除查询不会触发级联?

我有以下问题:当我尝试删除具有以下关系的实体时:

@OneToMany(mappedBy="pricingScheme", cascade=CascadeType.ALL, orphanRemoval=true)
private Collection<ChargeableElement> chargeableElements;
Run Code Online (Sandbox Code Playgroud)

CrudRepository通过提供删除方法它消除其所有的充电元件,其是精细沿着实体。当我尝试使用自定义删除时出现问题:

@Modifying
@Query("DELETE FROM PricingScheme p WHERE p.listkeyId = :listkeyId")
void deleteByListkeyId(@Param("listkeyId") Integer listkeyId);
Run Code Online (Sandbox Code Playgroud)

它说:

com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: 
  Cannot delete or update a parent row: a foreign key constraint fails
  (`listkey`.`chargeableelements`, CONSTRAINT `FK_pox231t1sfhadv3vy7ahsc1wt` 
  FOREIGN KEY (`pricingScheme_id`) REFERENCES `pricingschemes` (`id`))
Run Code Online (Sandbox Code Playgroud)

为什么不允许我这样做?难道@Query方法不支持级联特性?我知道我可以findByListkeyId(…)先使用标准的delete方法删除持久性实体,但这是不雅致的。是否可以@Query按照我尝试的方式使用自定义方法?

jpa cascade jpql cascading-deletes spring-data-jpa

1
推荐指数
1
解决办法
4457
查看次数

外键选项,ON DELETE CASCADE不起作用?

我正在尝试使用ON DELETE CASCADE我正在处理的数据库.似乎没有工作,所以我在一个简单的例子上测试了它没有成功.

CREATE TABLE foo (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
data VARCHAR(10),
PRIMARY KEY (id)
)ENGINE=InnoDB;

CREATE TABLE foo2 (
id INT UNSIGNED NOT NULL,
data2 VARCHAR(10),
PRIMARY KEY (id),
CONSTRAINT fk_foo2_id FOREIGN KEY (id) REFERENCES foo(id) ON DELETE CASCADE
)ENGINE=InnoDB;

INSERT INTO foo (data) VALUE ('hello'),('world'),('mysql');
INSERT INTO foo2 (data2) VALUE ('hello2'),('world2'),('mysql2');

SELECT * FROM foo;

+----+-------+
| id | data  |
+----+-------+
|  1 | hello |
|  2 | world |
| …
Run Code Online (Sandbox Code Playgroud)

mysql database cascade

1
推荐指数
1
解决办法
1818
查看次数

deleteById() 方法不适用于 ManyToMany 映射:Spring Boot 和 JPA

我有一个场景,其中策略实体表之间有一个多对多映射。这是实体代码-InsurancePolicy.java-

@Entity
@Table(name = "insurance_policy")

public class InsurancePolicy {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="policy_id")
    private long policyId;

    @Column(name="policy_name",nullable = false,unique = true)
    private String policyName;

    //Short description
    @Column(name="policy_description",nullable = false)
    private String policyDescription;

    //Long description
    @Column(name="choose_description",nullable = false)
    private String chooseDescription;


    //many policies can belong to one category
    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "company_id", nullable = false)
    private Company company;

    //many policies can belong to one category
    @ManyToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="category_id",nullable=false)
    private Category category;

    @ManyToMany(mappedBy …
Run Code Online (Sandbox Code Playgroud)

java cascade cascading-deletes spring-data-jpa spring-boot

1
推荐指数
1
解决办法
256
查看次数

当 QList 索引越界时捕获错误

我正在为 Blackberry 10 开发一个应用程序,当我尝试从 QStringList 获取元素 2 而该列表仅包含 1 个元素时,我的应用程序崩溃了。

我正在使用以下代码来捕获此类错误:

try {
    //a code that accesses QStringList with an index out of bounds
}
catch (Exception e) {

}
Run Code Online (Sandbox Code Playgroud)

但异常没有被捕获,应用程序总是崩溃。

我尝试了 catch (std:exception& e) 和 catch(...) 也没有工作。

如何使用 try catch 捕获此错误?

c++ cascade blackberry-10

0
推荐指数
1
解决办法
3354
查看次数

使用cascade = {CascadeType.TYPE_NAME}的目的是什么

我正在进行春季项目,在某些模型课中有类型

Cascade = {CascadeType.ALL}

用参数编写,例如:

@ManyToOne(fetch = FetchType.EAGER,cascade = CascadeType.ALL)@JoinColumn(name =“ USER_ID”,nullable = false)

私人用户用户;

我的问题是,我们应该将其用于什么目的?

谢谢你。

java spring hibernate cascade

0
推荐指数
1
解决办法
1055
查看次数