2017-10-02 2 views
0

私の外部キーと主キーは同じ名前なので、@ManyToOneリレーションを使用する際に問題があります。したがって、Hibernateは現在のテーブルの列名としてマップされているものを考慮しています。 だから私は@JoinColumn注釈のテーブル属性を使用すると思ったが、それは動作していないようだ。私はそれが価値のための実際のテーブルを与えたが、それは取っていない。クラス名も試しました。下記の はエンティティです。両方のテーブルでPRJ_NBRが同じであることがわかります。だから、私は期待二次テーブルが見つかりませんのようなエラーを取得していたプロジェクトを実行しようとすると:私はエラーになっています@JoinColumnからテーブル属性を削除した場合誰かが@JoinColumnアノテーションのテーブル属性の使い方を知っていますか?私は実際のテーブル名またはエンティティ名を与える必要がありますか?

なしHEADを - に繰り返し列をエンティティのマッピング:com.example.jpademo.Detailコラム:PRJ_NBR(挿入= "false" を更新= "false" にしてマッピングする必要があります)

@Entity(name="Head") 
@Table(name = "HEAD") 
public class QuoteHead { 
@Id 
@Column(name = "PRJ_NBR") 
private Integer projNumber; 
@Column(name = "CUS_SYS_ID") 
private Integer cusSysId; 
@OneToMany(mappedBy = "head", cascade = CascadeType.ALL, orphanRemoval = 
true) 
private List<Detail> details = new ArrayList<Detail>(); 
} 

@Entity 
@Table(name = "DETAIL") 
@JsonIgnoreProperties 
public class Detail { 
@Transient 
private Integer projectNumber; 
@Transient 
private Integer itemNumber; 
@Transient 
private Integer sequenceNumber; 

@ManyToOne 
@JoinColumn(name = "PRJ_NBR", table = "HEAD") 
private Head head; 

@JsonIgnore 
@EmbeddedId 
private DetailCompositeId id; 
} 
@Embeddable 
public class DetailCompositeId implements Serializable { 
private static final long serialVersionUID = 1L; 
@Column(name = "PRJ_NBR") 
private Integer projectNumber; 
@Column(name = "ITM_NBR") 
private Integer itemNum; 
@Column(name = "SEQ_NBR") 
private Integer sequenceNumber; 
} 
+0

(だけでなく、関連するDBスキーマ)あなたのエンティティを共有してください。 。 '私の外部キーと主キーの名前が同じです' – crizzis

+0

説明を更新します –

答えて

1

削除 'テーブル' と= "false" を挿入可能入れてみてください、更新可能= "偽"それは動作するはずだと思います

+0

私はすでにこれを試していて動作しません.. –

+0

注釈@PersistenceContext(type = PersistenceContextType .EXTENDED)DAO :) –

1

@MapsId注釈を利用できます。

この記事を参照してください:can someone please explain me @MapsId in hibernate?

あなた@ManyToOneマッピングで@JoinColumnを削除し、以下に示すように、@MapsIdでそれを置き換えることができます。

@ManyToOne 
@MapsId("projectNumber") 
private Head head; 
+0

動作しませんでした。私はコンポジットキーを持っているので、私はエラー以下になります。 外部キー(FKDEBBBFE3D4F36A7:DETAIL [head_PRJ_NBR]))は、参照される主キー(HEAD [ITM_NBR、head_PRJ_NBR、SEQ_NBR])と同じ列数を持つ必要があります –

関連する問題