Oracle テーブルには複合主キー oracle sequenceid +createtimestamp があるが、 @Entity クラスには @id (sequenceid) 主キーしかない可能性はありますか? 後でパージするために使用するテーブル パーティションの目的で追加するタイムスタンプ。エンティティの保存時に、タイムスタンプ値を常に追加します。この場合、データの観点からは、id だけがレコードの主キーです。ID だけで主キーを持つエンティティを作成できますか?
2 に答える
0
この場合、@ Entity クラスで複合主キーを作成する必要があります。以下の例のようにできます
@Entity
@Table(name="RELEASE_PERSON")
@IdClass(ReleasePersonPK.class)
public class ReleasePerson implements Serializable {
@Column(name="ORDER_NO", nullable=false, precision=2)
private Integer orderNo;
@Id
@Column(name="RELEASE_ID", insertable=false,updatable=false)
private long releaseId;
@Id
@Column(name="PERSON_ID", insertable=false,updatable=false)
private long personId;
@ManyToOne
@JoinColumn(name = "PERSON_ID", referencedColumnName = "PERSON_ID")
private Person person;
@ManyToOne
@JoinColumn(name = "RELEASE_ID", referencedColumnName = "ID")
private Release release;
そして、あなたの Id クラスは以下のようになります
@Embeddable
public class ReleasePersonPK implements Serializable {
/**
*
*/
private static final long serialVersionUID = -6286499269052596345L;
private Person person;
private Release release;
ReleasePersone テーブルの例では、rRelease(ID) と Person (Person_id) から複合主キーを取得します。
他に何か必要な場合はお知らせください。
于 2013-03-08T08:54:55.640 に答える
0
答えはイエスです。id はテーブル内で一意になると言ったように、sequenceId を PK としてエンティティに入れるだけで問題ありません。Hibernate を使用してテーブルを作成したり、テーブルの列を更新したりしない場合、実際にデータベースに何があるかは気にしません。
于 2013-03-08T09:01:53.637 に答える