質問

我々は、Oracleデータベースに対してHibernateのアノテーション3.4.0GAと休止状態のコア3.3.2.GA(また、現在の安定したバージョンとして知られている)を使用している

我々はloooong時間のために罰金を働いたベース= 1と1対多のマッピングを持って、まだ先週、私たちはインデックス列は、あらゆる種類の問題を引き起こした0の値が含まれ、データベース内のいくつかのエントリを見つけました。

だから、私の質問は:それは= 1ベースでマッピングされている1対多の関係の欄に0の値を取得する方法のんの誰でも知っていますか?おそらく使用のジェネリックまたはMappedSuperclassに関連します。

継承がうまくとして関与しているため、コードは、かなり複雑であること

注意。

以下は、クラスの関連部分は次のとおりです:

// SuperClass of the One side
@MappedSuperclass
public abstract class AbstractReihung<Tp, Tw, Te extends AbstractReihungElement<Tp, Tw>>
{
  @OneToMany(cascade = CascadeType.ALL)
  @Cascade(
  {
      org.hibernate.annotations.CascadeType.ALL,
      org.hibernate.annotations.CascadeType.DELETE_ORPHAN
  })
  @JoinColumn(name = "parent_id", nullable = false)
  @IndexColumn(name = "position", base = 1, nullable = false)
  private List<Te> elements = new ArrayList<Te>();
}

// Super Class of the Many side
@MappedSuperclass
public abstract class AbstractReihungElement<Tp, Tw> extends AbstractDbObject
{
  @ManyToOne
  @JoinColumn(name = "parent_id", insertable = false, updatable = false, nullable = false)
  private Tp parent;

  @Column(name = "position", insertable = false, updatable = false, nullable = false)
  private int position;
}

実際のクラスは、これらを継承し、型パラメータのための具体的なクラスを提供します。彼らは、エンティティとしてマッピングされます。彼らはまた、idとバージョン列を指定するだけでなく、他の属性と参照のトンが、手元のマッピングに関連した何ています。

役に立ちましたか?

解決

私はそれがほぼ二年をされている知っているが、同じ問題の解決策を検索しながら、私はこれにつまずきました。私はかなり確実で、これが役立つ場合じゃないので、私たちは、xmlファイルを経由してHBMを使用しています。 我々の場合には問題が逆マッピングしました。リスト(インデックス)以上のコントロールがリスト要素の側にいた場合は(「多」)あなたのケースのように、我々は問題を抱えていました。それを移動すると、これを解決しました。これは注釈で行われているのか分からない。

あなたがacctuallyあなたAbstractReihungオブジェクトの「要素」を設定した場合、

エラーの別の原因は、することができます。 Hibernateは遅延ロードされた性質のためのプロキシオブジェクトを使用しています。あなたは既存のものを・修正するのではなく、まったく新しいコレクションを設定する場合は、プロキシオブジェクトを上書きします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top