0

アプリケーションは、JSF および JPA で開発されます。

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)

Bill は親クラスであり、OpdBill、PharmacyBill などにサブクラス化されます。

複数のユーザーが同時に永続化を試みる場合があります。

Bill クラスのシーケンス番号を生成するのは簡単ですが、それは機能上必須ではありません。サブクラスごとに個別の自動生成シーケンス番号を取得するにはどうすればよいですか? (IDは必要ありません。シリアル番号のみ)

4

2 に答える 2

3

私が知る限り、JPA は非 ID 列に対してそのようなシーケンスを作成できませんが、次のような汚い回避策を実行できます。

次のような 2 番目のエンティティを生成します

@Entity
public class OpdSequence {
  @Id
  @GeneratedValue
  private Long id;
}

そしてあなたの OpdBill に 1 対 1 を作成します

@Entity 
public class OpdBill extends Bill {
  @OneToOne
  private OpdSequence opdId;
}
于 2012-11-14T23:22:14.943 に答える
1

OpdBill が Bill の場合、両方が同じ ID フィールドを共有する必要があり、Hibernate は ID のおかげで (クラスが何であれ) 2 つの Bill を区別できる必要があります。したがって、すべてのサブクラスは基本クラスと同じ ID 生成を共有する必要があり、Bill とそのサブクラスのすべてのインスタンスの ID は一意である必要があります。

于 2012-11-14T22:58:50.867 に答える