0

我有以下情况,避免明显的代码:

一个东西:

@Entity
@Table(name = "poliza")
public class Polizas implements Serializable {
    @Id
    @Column(name = "numero_poliza")
    private BigDecimal numero;
}

一个或多个子对象:

@Entity
@Table(name = "Autos")
@IdClass(AutosPk.class)
public class Autos {
    @Id
    @Column(name = "auto_id")
    private BigDecimal autoId;
    @Id
    @ManyToOne
    @JoinColumn(name = "numero_poliza")
    private Polizas poliza;
}

主键类:

public class AutosPk {
    private BigDecimal autoId;
    private BigDecimal poliza;
}

到目前为止,一切正常。但是,如果我需要将 Autos 修改为此(添加其他对象的列表):

@Entity
@Table(name = "Autos")
@IdClass(AutosPk.class)
public class Autos {
    @Id
    @Column(name = "auto_id")
    private BigDecimal autoId;
    @Id
    @ManyToOne
    @JoinColumn(name = "numero_poliza")
    private Polizas poliza;
    @OneToMany(mappedBy = "auto_id", cascade = { CascadeType.ALL })
    private List<AccesoriosAutos> accesorios;
}

还有孩子:

@Entity
@Table(name = "acce_auto")
@IdClass(AccesoriosAutosPk.class)
public class AccesoriosAutos {
    @Id
    @Column(name = "cod_acces")
    private BigDecimal codAcces;
    @Id
    @ManyToOne
    @JoinColumns({@JoinColumn(name = "numero_poliza", referencedColumnName = "numero_poliza"),
        @JoinColumn(name = "cod_auto", referencedColumnName = "cod_auto")})
    private Autos auto;
}

在主键类中:

public class AccesoriosAutosPk {
    private BigDecimal codAcces;
    private AutosPk auto;
}

描述的映射是错误的,但我这样发布是因为我认为它解释了我的需要。我已经搜索了几页,但我找不到进行此映射的方法。

提前感谢您的阅读,

胡安·罗梅罗

4

1 回答 1

0

从我的角度来说,我有几点要说:

  1. 很奇怪你使用@IdClass 和@Id。
  2. Autos 类应将 accesorios 注释为 @OneToMany(mappedBy = "auto", ....)
  3. AccesoriosAuto 自动列只需使用 @JoinColumn(name="cod_auto") 进行注释

希望这可以帮助。

于 2012-04-16T22:38:37.703 回答