2

JPA 2.0 を Hibernate 4.1.0 で使用しています。Entityクラスには次のものがあります。

@Entity
@Table(name = "PRODUCTS")
public class Product {

private String productNo;
private String productDesc;
private Date deliveryDate;
private Date invoiceDate;
private Integer productCurrencyId;
private String productCurrency;

上記は、CRUD操作だけでなく、レコードを表示するためのアプリケーションでも使用されます。

上記から、productCurrencyId通貨productCurrencyを選択するためのドロップダウン フィールドのアプリケーションで使用されます

Productこの 2 つを別の Entity クラスで使用するか、同じクラスで使用する方がよいか教えてください。同じクラスにある場合にこれを尋ねた理由はProduct、通貨のドロップダウン列の値を照会するにはどうすればよいですか?

ドロップダウンのレコードを取得するため@NamedQueriesに、Product クラスの呼び出し@NamedQuery(nameで使用できることを認識しています。DAOImpl使用したい場合は@NamedQuery(name、SQLステートメントをハードコーディングしていますか?ドロップダウン値に別のエンティティクラスを使用していない場合、通貨ドロップダウンのレコードを取得するために使用する方法@NamedQuery(name やその他のメカニズムはありますか? そのようなシナリオに最適なアプローチは何ですか?

どんな助けも非常に高く評価されます。

ありがとう

編集 1

エンティティ クラスに関してもう 1 つ質問したいのは、ドロップ ダウン列を持つ他のいくつかのフィールドがある場合、それらすべてのドロップ ダウン フィールドに対して個別のエンティティ クラスを作成する必要があるかということです。

4

2 に答える 2

2

通貨のリストをどこに保存しますか? Carsten が説明したように、彼らはデータベースに独自のテーブル (したがって独自のエンティティ) を持つことができ、Product と Currency の間に @OneToOne 関係があります。

@Entity
public class Product
{
    ...
    private String productNo;
    private String productDesc;
    private Date deliveryDate;
    private Date invoiceDate;

    @OneToOne
    @JoinColumn(name="currencyId")
    private Currency currency;
    ...
}

@Entity
public class Currency
{
    @Id
    private int id;

    private String currency;
}

次に、ドロップダウンに入力するには、Currency テーブルからすべてのレコードを取得する必要があります。

TypedQuery<Currency> query = entityManager.createQuery("SELECT c FROM Currency c");
List<Currency> query.getResultList();

通貨を追加するには、Currency テーブルにレコードを追加するだけでドロップダウンに正しい値が表示されるため、これは便利です。

カタログが変更される可能性が低い場合は、データベース内のテーブルの代わりに列挙型を使用できます。

@Entity
public class Person
{
    ...
    public enum Gender {male, female};

    @Enumerated(EnumType.STRING)
    private Gender gender;
}

ドロップダウンにデータを入力するには:

Person.Gender.values();

したがって、基本的には、カタログが変更される可能性があるかどうか、およびそれらの変更をどのように処理するかによって異なります。

于 2013-06-05T20:53:31.697 に答える