Java JPA-关系问题x错误代码:1452

Java JPA-关系问题x错误代码:1452,java,mysql,database,jpa,associations,Java,Mysql,Database,Jpa,Associations,我想保留对象类型“Trenutnoma”,我希望它也会将对象类型“Komponenta”插入我的数据库(“Korisnik”没有被创建,我已经创建了该对象,我唯一的问题是将这两个对象插入数据库,它们的关系无法建立) 下面是我的@Entity类的代码: // *********** Korisnik.class (i'll put just main parts, dont want to put // unecessary setters and getters which arent imp

我想保留对象类型“Trenutnoma”,我希望它也会将对象类型“Komponenta”插入我的数据库(“Korisnik”没有被创建,我已经创建了该对象,我唯一的问题是将这两个对象插入数据库,它们的关系无法建立)

下面是我的@Entity类的代码:

// *********** Korisnik.class (i'll put just main parts, dont want to put 
// unecessary setters and getters which arent important for this problem)

@Id
@Column(name = "idKor")
protected int idKor;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "korisnik")
private Collection<TrenutnoIma> listaTrenutnoIma = new ArrayList<>();


// *********** Komponenta.class (it's being made in same momment when 'TrenutnoIma' is)


@Id
private int idKom;

@OneToMany(cascade = CascadeType.ALL, mappedBy = "komponenta")
private Collection<TrenutnoIma> listaTrenutnoIma = new ArrayList<>();

// *********** TrenutnoIma.class

@Id 
private int idTre;

@JoinColumn(name = "idKom", referencedColumnName = "idKom")
@ManyToOne(optional = false, cascade = CascadeType.ALL)
private Komponenta komponenta;

@JoinColumn(name = "idKor", referencedColumnName = "idKor")
@ManyToOne(optional = false, cascade = CascadeType.ALL)
private Korisnik korisnik;

// *********** Code I want to execute

public static void main(String[] args) {

    EntityTransaction transaction = Menu.em.getTransaction();
    transaction.begin();     
    Komponenta K = new Komponenta();
    K.setNaziv("Component 3");
    K.setTip("Type 3");   
    TrenutnoIma tr = new TrenutnoIma(Menu.em.find(Kompanija.class, 2), K, 3, 3);     
    Menu.em.persist(tr);
    transaction.commit();

}
/************Korisnik.class(我只放主要部分,不想放
//不必要的setter和getter(对于此问题不重要)
@身份证
@列(name=“idKor”)
受保护的int idKor;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“korisnik”)
私有集合listaTrenutnoIma=newarraylist();
//*********Komponenta.class(它是在“Trenutnoma”出现的同一时间制作的)
@身份证
私营国际公司;
@OneToMany(cascade=CascadeType.ALL,mappedBy=“komponenta”)
私有集合listaTrenutnoIma=newarraylist();
//************Trenutnoma.class
@身份证
私人内部idTre;
@JoinColumn(name=“idKom”,referencedColumnName=“idKom”)
@多通(可选=假,级联=级联类型.ALL)
私人科波内塔科波内塔;
@JoinColumn(name=“idKor”,referencedColumnName=“idKor”)
@多通(可选=假,级联=级联类型.ALL)
私人科里斯尼克;
//**********我要执行的代码
公共静态void main(字符串[]args){
EntityTransaction=Menu.em.getTransaction();
transaction.begin();
Komponenta K=新Komponenta();
K.setNaziv(“第3部分”);
K.setTip(“3型”);
Trenutnoma tr=新的Trenutnoma(Menu.em.find(Kompanija.class,2),K,3,3);
Menu.em.persist(tr);
commit();
}
我尝试执行该操作,但控制台中出现错误:

我的类TrenutnoIma有两个外键引用,并设置为:在更新级联时,在删除时不执行任何操作。 提前谢谢

  • 要添加:首先我连接我的主实体和关系,当我持久化实体时,它表示在我的关系表中要从实体插入或更新主键
  • 另外,当我手动设置实体主键时,它工作得很好,但我在实体表中加入了“自动增量”,所以我避免了手动设置主键
哪里是“自动增量”?您还没有为它添加必要的JPA注释,哪里是“自动增量”?您还没有为此添加必要的JPA注释