2

Hibernate の関係に問題があります。

2 つのエンティティ --> SolicitudDetalleAccesorioがあり、関係は次のとおりです。

多くのDetalleAccesorioを持つSolicitudが 1 つあり、そのSolicitudDetalleAccesorioで保存する必要があり、どちらもデータベース上の異なるテーブルです。これはSolicitudの重要なコードです。

@Id @GeneratedValue( strategy=GenerationType.IDENTITY ) @Column( name="num_solicitud" ) private Long numSolicitud;

 @OneToMany( fetch=FetchType.LAZY, mappedBy="codDetalle", cascade={ CascadeType.ALL } )
 private List<DetalleAccesorio> listaAccesorios;     `

DetalleAccesorio で Solicitud の同じ主キーを保存するには何が必要ですか?

4

4 に答える 4

1

基本的に、次のように子エンティティ (DetalleAccesorio) でリレーションを設定する必要があります。

@ManyToOne
Solicitud codDetalle

このスレッドとこのドキュメントもご覧ください

于 2012-08-01T00:16:45.350 に答える
0

これはエンティティDetalleAccesorioからのコードです

@Id
@Column( name="cod_detalle" )
private Long codDetalle;

@Column( name="cod_accesorio" )
private Integer codAccesorio;

また、ID「codDetalle」は、保存するためにSolicitudと同じIDである必要があります(numSolicitud)...

于 2012-08-01T13:34:59.110 に答える
0

実際、from

にアクセスしたい場合は非常に簡単な解決策があります:SolicitudDetalleAccesorioクラスでは、これが必要です
:DetalleAccesorio

@ManyToOne(fetch=fetchType.EAGER)
Solicitud codDetalle

オプションでした。

(オプションではありません)これをSolicitud 試してください:

@OneToMany(fetch=FetchType.LAZY)
@JoinTable(name = "Solicitud_DetalleAccesorio_MAPPING", joinColumns = @JoinColumn(name = "DetalleAccessorio_ID"), inverseJoinColumns = @JoinColumn(name = "Solicitu_ID"))
List<ManagerDetails> managerDetails;
于 2012-08-01T09:35:05.503 に答える
0

mappedBy="codDetalle"リレーションから を削除します。create bidirectional relationship によってマッピングされます。双方向の関係では、mappedby (onetomany) を持つ側は関係を制御できなくなります。これが、休止状態がここに関係があることを認識しない理由です。必要に応じて実装するよりも双方向にしたい場合。両方の側に注釈を付ける必要があることと重要な部分を意味します-Javaで両方の方法で参照を維持する必要があります! これを見てください。

双方向で見られるように (必要だとは思わないので、マップされた by を削除すると解決されます)、コードで 2 つの方向を維持する必要があります。

関連付けの逆側のみに加えられた変更は保持されません。

于 2012-08-01T06:17:52.650 に答える