Java JPA-关系问题x错误代码:1452
我想保留对象类型“Trenutnoma”,我希望它也会将对象类型“Komponenta”插入我的数据库(“Korisnik”没有被创建,我已经创建了该对象,我唯一的问题是将这两个对象插入数据库,它们的关系无法建立) 下面是我的@Entity类的代码: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
// *********** 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有两个外键引用,并设置为:在更新级联时,在删除时不执行任何操作。
提前谢谢
- 要添加:首先我连接我的主实体和关系,当我持久化实体时,它表示在我的关系表中要从实体插入或更新主键
- 另外,当我手动设置实体主键时,它工作得很好,但我在实体表中加入了“自动增量”,所以我避免了手动设置主键