[英]Table or view doesn't exist after Hibernate SQL generation
我當前的Hibernate項目遇到一些映射問題。 但首先,我要告訴我我正在使用:
NetBeans 7.1.1
Java
JSF2
Oracle 10g
Apache Tomcat 7.0.22
Hibernate 3.2.1
我必須說,所有映射類都是由Hibernate反向工程向導使用Annotations生成的 ,我的意思是,這些類是從數據庫中的表構建的。 除了與OneToMany關系中插入有關的部分外,我可以正常運行該程序:
班級
主
@Entity
@Table(name = "EXP_EXPEDIENTES")
public class ExpExpedientes implements Serializable {
@Id
@SequenceGenerator(name = "seq", sequenceName = "EXP_SEQ") //Triggers are disabled so Hibernate can manage the sequence generation.
@GeneratedValue(generator = "seq")
@Column(name = "ID_EXP")
private long idExpediente;
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<ExpInstrucciones> expInstrucciones;
//more fields
//getters & setters
詳情
@Entity
@Table(name = "EXP_INSTRUC")
public class ExpInstrucciones implements Serializable {
@Id
@SequenceGenerator(name="seq",sequenceName="EXP_SEQ")
@GeneratedValue(generator="seq")
@Column(name = "ID_INS")
private long idInstruccion;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ID_EXP", nullable=false)
private ExpExpedientes expExpedientes;
//more fields
//getters & setters
這樣,我可以制作一個ExpExpediente對象和幾個ExpInstrucciones對象。 分配一些值之后,然后嘗試保存它們,我這樣做:
/* Previously, I've created these objects:
* expInst_1 = new ExpInstruccines();
* expInst_2 = new ExpInstrucciones();
*/
expInst_1.setExpExpedientes(expExpediente);
expInst_2.setExpExpedientes(expExpediente);
expExpediente.getExpInstrucciones().add(expInst_1);
expExpediente.getExpInstrucciones().add(expInst_2);
ExpedienteDAO.save(expExpediente);
DAO類中的save方法僅由session.save(expExpediente)組成 。 這就是我的問題所在。 閱讀Hibernate生成的sql后,我發現當Hibernate嘗試執行下一個句子時,出現ORA-00942:表或視圖不存在錯誤:
insert
into
EXP_EXPEDIENTES_EXP_INSTRUC
(EXP_EXPEDIENTES_ID_EXP, expInstrucciones_ID_INS)
values
(?, ?)
我認為該錯誤與表EXP_EXPEDIENTES_EXP_INSTRUC有關,該表顯然在數據庫中不存在。 實際上,正如我已經說過的那樣,映射是從數據庫生成的。
現在,我的問題是:我應該創建該表嗎? 還是所有這些問題是由於配置錯誤引起的? 我真的不知道該怎么辦,因此我們將不勝感激。
您的映射應如下所示:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY,
mappedBy = "expExpedientes")
private Set<ExpInstrucciones> expInstrucciones;
的雙向關系,雙方應通過連接mappedBy
的屬性@OneToMany
側,否則你會之間有兩個單向關系ExpExpedientes
和ExpInstrucciones
,其中一人使用外鍵和另外一個實施-使用連接表(默認)。
我猜這是“ 休眠反向工程向導”的錯誤,您也應該檢查此問題的其他關系。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.