Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Hibernate中使用级联时阻止更新或插入实体_Java_Hibernate_Jpa_Orm_Hibernate Mapping - Fatal编程技术网

Java 在Hibernate中使用级联时阻止更新或插入实体

Java 在Hibernate中使用级联时阻止更新或插入实体,java,hibernate,jpa,orm,hibernate-mapping,Java,Hibernate,Jpa,Orm,Hibernate Mapping,我有一个实体,enthesaplasm,这个实体与EntCariHareketler实体有关系。我在EntCariHareketler的EnteSaplasm实体中有一个外键。我想设置它们之间的关系,但我不想更新、插入或删除EntCariHareketler实体上的操作。只有我想读取第二个实体(EntCariHareketler)上的操作。我尝试了级联类型,但没有成功 下面你可以看到我的部分实体 @Entity @Table(name = "XOZ_HESAPLASMA") public cla

我有一个实体,enthesaplasm,这个实体与EntCariHareketler实体有关系。我在EntCariHareketler的EnteSaplasm实体中有一个外键。我想设置它们之间的关系,但我不想更新、插入或删除EntCariHareketler实体上的操作。只有我想读取第二个实体(EntCariHareketler)上的操作。我尝试了级联类型,但没有成功

下面你可以看到我的部分实体

@Entity
@Table(name = "XOZ_HESAPLASMA")
public class EntHesaplasma {

    Integer hesaplasmaid;
    EntCariHareketler carihareket;
    String hesaplasmagrup;

    @Id
    @GeneratedValue
    @Column(name = "hesaplasmaid", unique = true, nullable = false)
    public Integer getHesaplasmaid() {
        return hesaplasmaid;
    }

    public void setHesaplasmaid(Integer hesaplasmaid) {
        this.hesaplasmaid = hesaplasmaid;
    }

    @OneToOne(fetch= FetchType.LAZY)
    @JoinColumn(name="carihareketid")
    public EntCariHareketler getCarihareket() {
        return carihareket;
    }

public void setCarihareket(EntCariHareketler carihareket) {
    this.carihareket = carihareket;
}

@Column(name="hesaplasmagrup")
public String getHesaplasmagrup() {
    return hesaplasmagrup;
}

public void setHesaplasmagrup(String hesaplasmagrup) {
    this.hesaplasmagrup = hesaplasmagrup;
}
这是EntCarihareketler实体

@Entity
@Table(name = "CARI_HESAP_HAREKETLERI")
public class EntCariHareketler {

    private Integer cha_RECno;

    @Id
    @GeneratedValue
    @Column(name = "cha_recno", unique = true, nullable = false)
    public Integer getCha_RECno() {
        return cha_RECno;
    }

    public void setCha_RECno(Integer cha_RECno) {
        this.cha_RECno = cha_RECno;
    }
当我想保存EnteSaplas对象时,我不想更新或插入entCariHareketler实体,我得到了一个类似entCariHareketler实体无法插入的异常。但我不想插入entcarihareketler实体。hibernate尝试插入该实体(顺便说一句,在entcarihareket实体中,我不使用属于主键的某些字段。我只使用cha_Recno作为主键。这是复合主键中的重要字段。)

  • 如果您永远不想修改
    entcariHareKeller
    ,只需使用注释即可

  • 如果实体是可变的,但要禁用另一端的更新,则需要将
    insertable
    updateable
    @JoinColumn
    属性设置为
    false

    @OneToOne(fetch= FetchType.LAZY)
    @JoinColumn(name="carihareketid", insertable = false, updatable = false)
    public EntCariHareketler getCarihareket() {
        return carihareket;
    }
    

  • 我不明白你在问什么。与其告诉我们你不想做什么,不如给我们解释一下你想做什么,举个例子,展示一下你做了什么?“但我没能成功”:发生了什么?例外?意外行为?我尝试了insertable=false和Updateable=false,但是它更新了第二个表,但是@immutable可以工作并阻止更新。非常感谢。:)
    updateable=false
    不应传播FK更改,但仍然允许更改
    EntCariHareketler
    。如果您不想更改,则需要将
    EntCariHareketler
    注释为@Immutable。
    @OneToOne(fetch= FetchType.LAZY)
    @JoinColumn(name="carihareketid", insertable = false, updatable = false)
    public EntCariHareketler getCarihareket() {
        return carihareket;
    }