私のDBには2つのテーブルがあります。 IDとその他の列を含む表1。 Table2は私がtable2のidとしてtable1からのPKを持っている関係テーブルですが、私はTable2のIDを使用せず、いくつかの値を他のランダムなデータに保持します。Idカラムは他のテーブルJPAエンティティから来ます
JPAでは@Idアノテーションを使用する必要があります。私の問題は、table1のエンティティをtable2エンティティの@Idとして入れることです。これは可能ですか?はいの場合、どうですか?これまで
コード: 表1
@Entity
@Table(name="Log", schema="logs")
@PersistenceUnit(name="domas")
@Inheritance(strategy = InheritanceType.JOINED)
@DiscriminatorColumn(name="type", discriminatorType = DiscriminatorType.STRING)
public abstract class Log implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name="id", nullable=false)
public String id;
@Column(name="type", nullable=false)
@Enumerated(EnumType.STRING)
public LOG_TYPE type;
// and alot more not related code
表あなたが@OneToOne属性名IDと型LogRelationとは逆側を持っていない場合は2
@Entity
@Table(name="Log_Entity", schema="relations")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "relationType", discriminatorType = DiscriminatorType.STRING)
public abstract class LogRelation implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@OneToOne(mappedBy="id")
public Log log;
// and alot more not related code
別のテーブルのテーブルIDを作成しようとしていますか?または、あるテーブルからいくつかのフィールドを選択しようとしていて、別のテーブルの__複合主キー_を作成しようとしていますか?もしそうなら、 '@ Embeddable'と' @ EmbeddedId'という注釈をチェックアウトする必要があります。 –
私はテーブル2から実際のID列を持っていないので、Table2のEntityを宣言する必要がないように、Table1からTable2にPKを取得しようとしています。しかし、JPAはId-annotationを使用するように強制しています。 – Marthin