【问题标题】:java hibernate one to many "Hibernate mapping files and POJOs from database"java休眠一对多“来自数据库的休眠映射文件和POJO”
【发布时间】:2014-05-07 11:23:33
【问题描述】:

我正在使用 Hibernates“Hibernate 映射文件和来自数据库的 POJO”将表转换为 POJO。问题是表关系不会自动创建“Set ...”属性。我必须做些什么才能让 Hibernate 使用它?

示例表结构:

编辑: 例如,Stock 有一个属性“Set StockDailyRecord”。 Hibernate 应该自动添加它们。我的意思的一个例子可以在这里找到:http://www.tutorialspoint.com/hibernate/hibernate_set_mapping.htm

【问题讨论】:

  • 提供更多细节,什么“Set...”属性?
  • “设置...”属性是什么意思?
  • 如果您指的是 Java 实体 setXXX 方法,则需要全部创建。

标签: java database hibernate pojo


【解决方案1】:

为 java 对象创建 setter 和 getter 是开发人员的工作。

假设你有一个字段

private Set<Stock> stockDailyRecord;

通常你会创建一对:

public Set<Stock> getStockDailyRecord();
public void setStockDailyRecord( Set<Stock> newRecordSet);

然后你通常也会创建一个方便的方法

public void addDailyRecord( Stock newRecord)
{
    this.getStockDailyRecord().add(newRecord);
}

提示:大多数 IDE 会在您定义字段后为您创建 getter/setter。

【讨论】:

  • 我希望它自动填充为:" @OneToMany(fetch = FetchType.LAZY, mappedBy = "stock")" 当我执行它时,它仍然是一个空的hashmap
  • 当你从数据库中加载对象时,集合不会为空,它会是一个延迟加载的容器。然后,当您取消引用集合时,它将加载任何(如果有)相关对象。但是当您自己创建对象时,您需要自己填充该字段。
【解决方案2】:

通常,您只需要一个获取关系的方法。

  Set<StockDailyRecord> getStockDailyRecords() { return stockDailyRecords; }

然后

  StockDailyRecord aStockDailyRecord = ...
  stock.getStockDailyRecords().add(aStockDailyRecord);

【讨论】:

    猜你喜欢
    • 2011-04-07
    • 1970-01-01
    • 2019-02-19
    • 2010-09-23
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    相关资源
    最近更新 更多