2016-04-30 11 views
1

あなたの助けが必要です。1つのエンティティで3つの同一のテーブルをマッピングする

私はデータベース上で3つのテーブルをpostgresql上で実行しています。それらはまったく同じ構造です。だから私は1つのエンティティでそれらをマッピングできると思った。

私はこれ試してみてください。

@Entity 
@Table(name = "stock_tierra") 
@SecondaryTables({ 
    @SecondaryTable(name = "stock_bebelandia"), 
    @SecondaryTable(name = "stock_libertador") 
}) 

public class Stock implements Serializable { 

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "id_stock", unique = true, nullable = false) 
private int idStock; 

@Column(name = "cantidad", nullable = false) 
private int cantidad; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "id_producto", nullable = false) 
private Producto idProducto; 

@Column(name = "estado", nullable = false) 
private boolean estado; 

@Column(name = "usuario_creacion", nullable = false) 
private int usuarioCreacion; 

@Column(name = "usuario_modificacion") 
private Integer usuarioModificacion; 

@Temporal(TemporalType.DATE) 
@Column(name = "fecha_creacion", nullable = false, length = 13) 
private Date fechaCreacion; 

@Temporal(TemporalType.DATE) 
@Column(name = "fecha_modificacion", length = 13) 
private Date fechaModificacion; 

@ManyToOne(fetch = FetchType.EAGER) 
@JoinColumn(name = "id_sucursal", nullable = false) 
private Sucursal idSucursal; 

をしかし、私は1つのテーブルに見しようとすると、私は最初のstock_tierra

String stockSucursal = null; 
    switch (sucursal) { 
     case 1: 
      stockSucursal = "stock_tierra"; 
      break; 
     case 2: 
      stockSucursal = "stock_bebelandia"; 
      break; 
     case 3: 
      stockSucursal = "stock_libertador"; 
      break; 
    } 
    Criteria criteria = getSession().createCriteria(Stock.class, stockSucursal); 
    criteria.add(Restrictions.eq("estado", true)); 
    criteria.addOrder(Order.asc("idStock")); 
    List<Stock> list = criteria.list(); 
    return list; 

から私が間違ってやっているいくつかのアイデアを、データを取得しますか?

+0

注釈でこれを表現する方法がないので、xmlに頼らなければなりません。 –

答えて

1

@SecondaryTablesは、1つのエンティティが列単位で複数の表に広がっていることを示すために使用され、ではなく、をユニオンとして表します。

私が今考えることのできる唯一のことは、すべてのテーブルを結合したビューを使用していることですが、書き込み可能なビューを処理できるかどうか、インターフェイス)。

+0

ありがとう、ええ、あなたは正しい、私はそのようにマップすることはできません。 –

関連する問題