0

これを続けて、別のエンティティを作成し、OneToOne の関係を作成するというアプローチを取ることにしました (これで問題ないと思います)。私が何をしてきたかを説明させてください:

これらの関連フィールドを持つ Juez (裁判官) エンティティがあります。

@Entity
@Table(name = "jueces")
public class Juez implements Serializable {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    @Column(name = "id")
    private Integer id;

    @Version
    @Column(name = "opt_lock")
    private Integer version;

    @Basic
    @Column(name = "nombres")
    private String nombres;

    // Getters, setters, other properties, etc.

}

そして、RolDeJueces (ジャッジ ロール) と呼ばれる別のエンティティjava.util.Map<Integer, Juez>に、キーを並べ替え (1,2,3...) てジャッジにマップし、ロールを使用して計算を行うことができるようにする必要があります。これが私が今まで持っているものです:

@Entity
@Table(name = "rol_jueces")
public class RolDeJueces {

     @Id
     private Integer id;

     @Version
     @Column(name = "opt_lock")
     Integer version;

     @OneToMany //Is this ok?
     @MapKeyColumn(name = "orden_juez", updatable = true)
     private Map<Integer, Juez> rol;

     // Getters, setters, other properties, etc.

}

マップ キーをソートし、すべてのジャッジへの参照を 1 回だけ (@OneToOne 風に) 保持するにはどうすればよいですか?

また、ジャッジの順序を変更し、変更を永続化できる必要があります。

rolDeJueces.getRol().clear(); // Delete current order
int order = 0;
// Add judges according to new order to the roll
for(Juez juez : getNewOrder()){
    RolDeJueces.getRol().put(++order, juez);
}

// save my new roll and stuff...

これは可能ですか?

4

1 に答える 1

0

わかりました。挿入順序のマップも、必要なものも必要ないことがわかりました。

これが実装です:

 @Id
 @GeneratedValue(strategy = GenerationType.TABLE)
 private Integer id;

 @Version
 @Column(name = "opt_lock")
 private Integer version;

 @OneToMany(orphanRemoval = false)
 @OrderColumn(name = "order_jueces")
 private List<Juez> rol;

@OrderColumn は、リレーションシップに使用されるテーブルに追加の列を生成します。

于 2012-10-15T14:27:58.403 に答える