2016-05-24 5 views
0
@Entity 
@Table(name="Articulo") 
public class Articulo implements Serializable { 
     @Id 
     @ManyToOne 
     @JoinColumn(name="cod_familia") 
     Familia familia;  
     @Id 
     String cod_articulo;  
     String lit_articulo; 
     char estado; 

    @Entity 
    @Table(name="familia") 
    public class Familia { 

     @Id 
     String cod_familia; 
     String lit_familia; 
     char estado; 

を選択:Hibernate。 ManyToOneは生成のn + 1、私はすべての "articulo" リストときに、この2クラスで

public List<Articulo> list() { 
    return session().createCriteria(Articulo.class).list(); 
} 

を1は、それぞれの家族のために、両方のテーブルと、その後1を結ぶ選択生成休止状態...

どうすればこの問題を解決できますか?

答えて

0

理由は、この注釈がなければ

@Id 
@ManyToOne 
@JoinColumn(name="cod_familia") 
Familia familia; 

ここに追加@Id注釈であるHibernateは、追加の選択

@Entity 
@Table(name = "Articulo") 
public class Articulo { 

    @Id 
    private String codArticulo; 

    @ManyToOne 
    @JoinColumn(name = "cod_familia") 
    private Familia familia; 

} 

    select 
     this_.f_cod_articulo as f_cod_ar1_0_1_, 
     this_.cod_familia as cod_fami2_0_1_, 
     familia2_.f_cod_familia as f_cod_fa1_1_0_ 
    from 
     Articulo this_ 
    left outer join 
     familia familia2_ 
      on this_.cod_familia=familia2_.f_cod_familia 

を使用していない更新

追加の代理の主を追加することができますキーとユニークな制約です。

@Entity 
@Table(name = "Articulo", 
     uniqueConstraints = @UniqueConstraint(
     columnNames = { "cod_articulo", "cod_familia" })) 
public class Articulo implements Serializable { 

    @Id 
    @GeneratedValue 
    private Long id; 

    @Column(name = "cod_articulo") 
    private String codArticulo; 

    @ManyToOne 
    @JoinColumn(name = "cod_familia") 
    private Familia familia; 

} 
+0

がproblemaを解決いけない:( – Gwaihir

+0

@Gwaihirをしてください、あなたはあなたの質問に 'Articulo'をロードする方法を追加します。 –

+0

私はあなたが使用してどのHibernateのバージョン質問THX – Gwaihir

関連する問題