标签: cascade

Hibernate 继承模型删除时的级联

我有一个表定义如下:

    @实体
    @桌子
    @Inheritance(策略=InheritanceType.JOINED)
    公共类表实现可序列化{
        @ID
        @GenerateValue
        私人长ID;
    ...
    }

然后我有一个继承表:

    @实体
    @桌子
    公共类子表扩展表{
        ...
    }

Hibernate 在我的 Postgres 数据库中正确创建了两个表,但它将两个表之间的删除操作定义为“无操作”。

我如何在 Hibernate 中定义我希望在删除时定义 CASCADE 操作?例如,当我手动从表Table 中删除一行时,我想自动获取表SubTable中要删除的相应行。当我现在尝试从表中删除一行时,它返回外键约束冲突错误。

java postgresql hibernate jpa cascade

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

当我有“ON UPDATE CASCADE”时,MySql“无法更新父行”

所以,我得到:

错误代码:1451。无法删除或更新父行:外键约束失败(playground. Person、CONSTRAINT sk_Person_Parent FOREIGN KEY ( parent_id) REFERENCES Person( id) ON DELETE CASCADE ON UPDATE CASCADE)

这是一个简单的表格,引用自身:

CREATE TABLE IF NOT EXISTS Person (
id int not null primary key,
name varchar(100) not null,
parent_id int null,
CONSTRAINT `sk_Person_Parent`
  FOREIGN KEY (parent_id)
  REFERENCES Person (id)
  ON DELETE CASCADE
  ON UPDATE CASCADE
);
Run Code Online (Sandbox Code Playgroud)

如您所见,有“ON UPDATE CASCADE”。我在其中插入 4 个简单的行:

INSERT INTO Person(id, name, parent_id)
VALUES
(1, 'vasko', NULL), 
(2, 'asdas', 1), 
(3, 'ivo', 1), 
(4, …
Run Code Online (Sandbox Code Playgroud)

mysql sql cascade onupdate

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

Django 无法级联删除相关的通用外键对象

我在我的模型中定义了以下内容:

class TaskLink(models.Model):
    task = model.ForeignKey(Task)
    link_choices = (
        models.Q(app_label="accounts", model="location"),
        # Other models are also linked to here.
    )
    linked_content_type = \
        models.ForeignKey(
            ContentType,
            limit_choices_to=link_choices
        )
    linked_object_id = models.PositiveIntegerField()
    linked_object = \
        generic.GenericForeignKey(
            'linked_object_content_type',
            'linked_object_id'
        )
Run Code Online (Sandbox Code Playgroud)

该模型将Task对象与元组中的任何模型链接起来link_choices。在本例中,该accounts.Location模型在此列表中。

当删除一个Location对象导致相关对象的级联删除时,我的问题就出现了TaskLink。删除失败并出现以下错误消息:

django.core.exceptions.FieldError: Cannot resolve keyword 'object_id' into field. Choices are: id, linked_object, linked_object_content_type, linked_object_content_type_id, linked_object_id, task, task_id
Run Code Online (Sandbox Code Playgroud)

视图是django.views.generic.DeleteView仅包含pk_url_kwarg参数和模型集的实例(以及添加到调度方法中的权限装饰器);TaskLink在我将模型添加到混合中之前,它可以正常工作 linked_object_fine 。

我缺少什么?

编辑:这似乎可能是 Django 中的一个错误;当通过通用外键级联删除对象时,Django 会忽略传递给字段构造函数的字段名称字符串GenericForeignKey …

django cascade django-class-based-views generic-foreign-key

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

Android 房间数据库 KOTLIN 中的级联删除

StackOverflow 中有很多这样的问题,但其中大部分与房间数据库无关,所以我不得不问一个新问题。

我有一个使用房间数据库的应用程序,它有近 4 个表,这些表之间有很大的关系,因此,例如,当我删除用户列表片段中的用户时,该用户会删除(仅用户名和一些个人信息),但用户的交易并且 LOANS 没有被删除。有人告诉我我必须使用级联删除,但我没有找到太多关于它的信息。

我的用户类模型:

@Entity(tableName = "user_info")
data class UserInfo(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "user_id")
var userId: Long =0L,
@ColumnInfo(name = "full_name")
var fullName:String?,
@ColumnInfo(name= "account_id")
var accountId: String?,
@ColumnInfo(name = "mobile_number")
var mobileNumber:String?,
@ColumnInfo(name = "phone_number")
var phoneNumber:String?,
@ColumnInfo(name = "date_of_creation")
var dateOfCreation:String?,
@ColumnInfo(name = "address")
var address:String?,
)
Run Code Online (Sandbox Code Playgroud)

交易模型类:

@Entity(tableName = "transactions")
data class Transactions(
    @PrimaryKey(autoGenerate = true)
    @ColumnInfo(name = "trans_id")
    var transId: Long = 0L,
    @ColumnInfo(name = "user_id")
    var userId: …
Run Code Online (Sandbox Code Playgroud)

android cascade delete-row kotlin android-room

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

如何确定数据库表关系是否值得强制执行参照完整性?

我有一个应用程序,其中大多数数据库表与另一个表有很强的关系.目前我正在使用外键强制引用完整性,但我想知道这是否真的是最好的方法.主表中的数据可以由业务用户从管理界面中删除,这意味着必须进行级联删除(或编写几个删除语句),但我不确定我是否真的想要删除所有其他数据同一时间.它可能是很多*可能*在以后有用的数据(报告可能?).但是,除非与主表存在关系,否则辅助表中的数据对应用程序本身基本无用.

database referential-integrity cascade

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

1:Hibernate和级联操作中的M关系

表SUBCOURSE引用COURSE COURSE(id,name)SUBCOURSE(id,course_id,name)

所以,1:M.

Hibernate为课程生成:

    @OneToMany(fetch = FetchType.LAZY, mappedBy = "course", cascade = CascadeType.ALL)
    public Set getSubCourses() {
        return this.subCourses;
    }

对于它产生的子课程

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "course_id", nullable = false)
    public Course getCourse() {
        return this.course;
    }

现在问题是级联不能按预期工作.我想创建一个SubCourse对象集合(Set),填充它然后将它绑定到Course对象的setSubCourses().然后只需保留Course对象即可.

虽然,在Subcourses表中有ManyToOne的东西,我需要在添加到每个对象的集合之前手动setCourse().如果我不这样做,则在使用其集合持久化Course对象时会引发异常.

你能推荐我什么?

PS或者这可能是游戏的一部分?手动设置每个孩子的父对象?

java orm hibernate cascade

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

Hibernate @OnDelete级联相同的表

我正在尝试创建一个捕获父子关系的表,如树.我想只保留两列来捕获这个结构"id"和"parent".我希望数据库能够在删除行时级联删除所有子项.下面是我创建的Hibernate实体,@OnDelete(action = OnDeleteAction.CASCADE)但是我添加了注释,但是ON DELETE CASCADE当Hibernate创建表时,没有添加到表中.

这是一个错误吗?或者有什么我缺少或不理解?

@Entity
public class Tree {

    @Id
    @Column(name = "id", nullable = false)
    private Long id;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "parent", nullable = true)
    private List<Tree> children;

    @ManyToOne
    @OnDelete(action = OnDeleteAction.CASCADE)
    @JoinColumn(name = "parent", nullable = false)
    private Tree parent;

    public Tree(Long id) {
        this.id = id;
    }

    public Tree() {
    }

    public Long getId() {
        return id;
    }

    protected void setId(Long id) {
        this.id = id;
    }

    public List<Tree> …
Run Code Online (Sandbox Code Playgroud)

hibernate cascade cascading-deletes jpa-2.0 hibernate-cascade

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

PreUpdate级联实体持久化symfony 2.3

我对PreUpdate HasLifecycleCallbacks有一些问题.

我有一个实体,假设"A"与实体"B"具有OneToOne关系.所以我有:

/**
 * @ORM\Entity()
 * @ORM\HasLifecycleCallbacks
 */
 class A
{
    /**
     * @ORM\OneToOne(targetEntity="B", inversedBy="attrA", cascade={"persist", "remove"})
     * @ORM\JoinColumn(name="fieldB", referencedColumnName="id")
     */
    private $attrB;

    public function __construct()
    {
        $this->attrB = new B();
    }

    /**
     * @ORM\PrePersist
     * @ORM\PreUpdate
     */
    public function updateSomthing(){
        //$gestor = fopen("/pruebitas.txt", "r");
        $this->attrB->setDate($this->getDate());
   }
}
Run Code Online (Sandbox Code Playgroud)

B级是:

class B
{
    /**
     * @ORM\OneToOne(targetEntity="A", mappedBy="attrB")
     */
    private $attrA;
}
Run Code Online (Sandbox Code Playgroud)

当我创建一个新的实体A,一切正常,问题是当我更新实体A时,PreUpdate函数是fire,(因为它在注释行中创建文件),但实体B不会在数据库中持久存在,即使B中的字段应该更新.

有没有想法在PreUpdate上级联持久化?

谢谢!!

entity cascade updates persist symfony

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

Windows 7 - 右键单击​​Python的上下文级联菜单

我正在尝试添加*.zip文件的上下文菜单.用nessesary参数启动我的python脚本.

我已添加注册以下键:

[HKEY_CLASSES_ROOT\WinZip\shell\SSSeracher] "MUIVerb"="SSSearcher Script" "SubCommands"="SSSearcher.Rule1;SSSearcher.Rule2;SSSearcher.Rule3;SSSearcher.Custom;SSSearcher.Config"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule1] @="Rule #1"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule1\command] @="C:\\APPS\\python\\Scripts\\sssearcher.py \"%1\" \"1\""
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule2] @="Rule #2"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule2\command] @="C:\\APPS\\python\\Scripts\\sssearcher.py \"%1\" \"2\""
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule3] @="Rule #3"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Rule3\command] @="C:\\APPS\\python\\Scripts\\sssearcher.py \"%1\" \"3\""
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Custom] @="Custom rule"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Custom\command] @="C:\\APPS\\python\\Scripts\\sssearcher.py \"%1\" \"4\""
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Custom] @="Custom rule"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Custom\command] @="C:\\APPS\\python\\Scripts\\sssearcher.py \"%1\" \"4\""
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Config] @="Config File"
[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\SSSearcher.Config\command] @="vim C:\\APPS\\python\\Scripts\\sssearcher.pyc"
Run Code Online (Sandbox Code Playgroud)

当菜单显示点击那些绝对没有.

我一直在关注这个教程:http: //msdn.microsoft.com/en-us/library/windows/desktop/hh127467%28v=vs.85%29.aspx

我遗漏了一些东西,但不幸的是我找不到答案.你能帮帮我吗?

python windows shell cascade

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

每个ID删除许多记录 - MVC C#

我拥有的数据库的设置Company可以有很多Engineer,也可以有很多Territory.如果我应该从列表中删除公司,我需要做一个干净的退出,所以不要只删除公司表格中的公司表格.我必须确保所有记录都被删除.因此,没有子/相关记录成为孤儿数据.

如果我要从所有表中删除一条记录,我只想删除它FirstOrDefault,然后我可以使用

public void RemoveCompany(long companyId)
{
    using (var db = new BoilerServicingDbContext())
    {
        var ec = db.Engineers.FirstOrDefault(x => x.CompanyId == companyId);
        db.Engineers.Remove(ec);
        var tc = db.CompanyTerritories.FirstOrDefault(x => x.CompanyId == companyId);
        db.CompanyTerritories.Remove(tc);
        var p = db.Companies.FirstOrDefault(x => x.Id ==  companyId);
        db.Companies.Remove(p);
        db.SaveChanges();       
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,每个公司有多个工程师,每个公司有一个以上的领土.是否有一个简单的方法,如一般的数据库意义.

DELETE * FROM Engineers WHERE companyId = 1;
Run Code Online (Sandbox Code Playgroud)

此刻我没有Cascading删除设置,所以除此之外.任何其他选择.

c# model-view-controller asp.net-mvc entity-framework cascade

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