У меня есть 2 таблицы parent и child, parent как 1 Primary Key и составной уникальный ключ (комбинация из 2 столбцов [UN_KEY1, UN_KEY2]).Теперь в дочерней таблице я называю эти 2 столбца внешними ключами.Когда я пытаюсь сгенерировать объект в затмении, он показывает отношение «многие к одному» и отображает родительские столбцы.Но когда я генерирую эти два столбца не генерируются в родительском объекте.Как выполнить транзакцию, например, добавить, обновить, удалить в этих объектах без этих столбцов
Таблица
--drop table "TBL_PARENT";
CREATE TABLE "TBL_PARENT"(
"S_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1, NO MINVALUE, NO MAXVALUE, CACHE 20),
"UN_KEY1" Integer NOT NULL,
"UN_KEY2" Smallint NOT NULL,
"SOME_COL1" Integer
);
-- Add keys for table TBL_PARENT
ALTER TABLE "TBL_PARENT" ADD CONSTRAINT "TBL_PARENTKEY3" PRIMARY KEY ("S_ID");
ALTER TABLE "TBL_PARENT" ADD CONSTRAINT "TBL_PARENTKey4" UNIQUE ("UN_KEY1","UN_KEY2");
--drop table "TBL_PARENT";
CREATE TABLE "TBL_CHILD"(
"S_ID" Integer NOT NULL GENERATED ALWAYS AS IDENTITY(START WITH 1, INCREMENT BY 1, NO MINVALUE, NO MAXVALUE, CACHE 20),
"UN_KEY1" Integer,
"UN_KEY2" Integer,
"SOME_COL2" Integer
);
ALTER TABLE "TBL_CHILD" ADD CONSTRAINT "TBL_CHILD_KEY3" PRIMARY KEY ("S_ID");
ALTER TABLE "TBL_CHILD" ADD CONSTRAINT "TBL_CHILD_FK" FOREIGN KEY ("UN_KEY1", "UN_KEY2") REFERENCES "TBL_PARENT" ("UN_KEY1", "UN_KEY2");
Сгенерированный код:
@Entity
@Table(name="TBL_PARENT")
@NamedQuery(name="TblParent.findAll", query="SELECT t FROM TblParent t")
public class TblParent implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="S_ID")
private int sId;
@Column(name="SOME_COL1")
private int someCol1;
//bi-directional many-to-one association to TblChild
@OneToMany(mappedBy="tblParent")
private Set<TblChild> tblChilds;
public TblParent() {
}
public int getSId() {
return this.sId;
}
public void setSId(int sId) {
this.sId = sId;
}
public int getSomeCol1() {
return this.someCol1;
}
public void setSomeCol1(int someCol1) {
this.someCol1 = someCol1;
}
public Set<TblChild> getTblChilds() {
return this.tblChilds;
}
public void setTblChilds(Set<TblChild> tblChilds) {
this.tblChilds = tblChilds;
}
public TblChild addTblChild(TblChild tblChild) {
getTblChilds().add(tblChild);
tblChild.setTblParent(this);
return tblChild;
}
public TblChild removeTblChild(TblChild tblChild) {
getTblChilds().remove(tblChild);
tblChild.setTblParent(null);
return tblChild;
}
}
@Entity
@Table(name="TBL_CHILD")
@NamedQuery(name="TblChild.findAll", query="SELECT t FROM TblChild t")
public class TblChild implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="S_ID")
private int sId;
@Column(name="SOME_COL2")
private int someCol2;
//bi-directional many-to-one association to TblParent
@ManyToOne
@JoinColumns({
@JoinColumn(name="UN_KEY1", referencedColumnName="UN_KEY1"),
@JoinColumn(name="UN_KEY2", referencedColumnName="UN_KEY2")
})
private TblParent tblParent;
public TblChild() {
}
public int getSId() {
return this.sId;
}
public void setSId(int sId) {
this.sId = sId;
}
public int getSomeCol2() {
return this.someCol2;
}
public void setSomeCol2(int someCol2) {
this.someCol2 = someCol2;
}
public TblParent getTblParent() {
return this.tblParent;
}
public void setTblParent(TblParent tblParent) {
this.tblParent = tblParent;
}
}