gpt4 book ai didi

hibernate - 下拉列的 JPA 实体

转载 作者:行者123 更新时间:2023-12-04 04:54:39 25 4
gpt4 key购买 nike

我在 Hibernate 4.1.0 中使用 JPA 2.0,我的 Entity 中有以下内容类(class)

@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 操作的应用程序。

从上面 productCurrencyIdproductCurrency将在应用程序中用于选择货币的下拉字段

我想知道将这两个放在单独的实体类中还是在同一个 Product 中使用更好课?我问这个的原因是否在同一个 Product类(class)如何查询货币下拉列的值?

我知道我可以使用 @NamedQueries在产品类调用 @NamedQuery(nameDAOImpl检索下拉记录。如果我想使用 @NamedQuery(name然后我硬编码了一个 sql 语句,对吗?有什么方法可以使用 @NamedQuery(name如果我没有使用单独的实体类来获取下拉值,或者其他一些机制来获取货币下拉记录?这种情况的最佳方法是什么?

任何帮助都是非常可观的。

谢谢

编辑 1

我想问的关于 Entity 类的另一个问题是,如果我有其他一些带有下拉列的字段,我是否应该为所有这些下拉字段创建单独的 Entity 类?

最佳答案

您想在哪里存储货币列表?正如 Carsten 解释的那样,他们可以在数据库中拥有自己的表(因此拥有自己的实体),并且您将在产品和货币之间拥有 @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();

这很方便,因为要添加货币,您只需要在货币表中添加一条记录,下拉列表就会显示正确的值。

如果您的目录不太可能更改,则可以使用枚举而不是数据库中的表:
@Entity
public class Person
{
...
public enum Gender {male, female};

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

并填充下拉列表:
Person.Gender.values();

所以基本上这取决于目录是否可能更改以及您希望如何处理这些更改。

关于hibernate - 下拉列的 JPA 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com