私の現在のHibernateプロジェクトには、いくつかのマッピングの問題があります。しかし、まず最初に、私が使用していることを伝えます:
NetBeans 7.1.1
Java
JSF2
Oracle 10g
Apache Tomcat 7.0.22
Hibernate 3.2.1
すべてのマッピングクラスは、アノテーションを使用してHibernate Reverse Engeneering Wizardによって生成されたと言わざるを得ません。つまり、クラスはデータベースのテーブルから構築されました。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に関連していると思います。実際、すでに述べたように、マッピングはデータベースから生成されました。
そして今、私の質問:私はそのテーブルを作成することになっていますか?または、この問題はすべて、設定ミスの問題が原因ですか?どうしたらいいのかわからないので、助けていただければ幸いです。