【问题标题】:Hibernate and spring data repository, object incomplete after save or updateHibernate和spring数据存储库,保存或更新后对象不完整
【发布时间】:2018-06-15 10:31:41
【问题描述】:

通过 spring 数据存储库(扩展 CrudRepository)保存或更新此实体的对象后:

@Entity
@Table(name="finance_data")
public class FinanceData implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@Column(unique=true, nullable=false)
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Integer id;

@OneToOne(fetch=FetchType.EAGER)
@JoinColumn(name="asset_type", nullable=false)
private AssetType assetType;

它只为assetType 属性返回Id。这迫使我们在更新后执行 findOne 以获取完整信息。

如何告诉休眠返回整个对象?

【问题讨论】:

  • 您能否添加保存/更新代码示例以及稍后如何尝试检索资产类型?
  • 这是一个 spring-data-jpa 存储库,除此之外我没有任何代码:@Repository public interface FinanceDataRepository extends CrudRepository{ }
  • 你说你是在强制 findOne 获取数据。所以在 jpa 调用周围有一些代码
  • 完全没有,“findOne”(以及保存、删除...)方法是从接口 CrudRepository 扩展而来的
  • 它只是不是 100% 清楚您的目标。显示您如何创建实体、保存/更新它.. 以及您如何尝试检索其内容

标签: java hibernate spring-data-jpa


【解决方案1】:

它只返回 assetType 属性的 ID。

这是因为所有其他字段都通过您自己的操作设置为null(如 cmets 中所述):

当我尝试保存新的 FinanceData 记录时,我只为属性 AssetType 设置了参考 ID,因为它们在记录 FinanceData 之前就存在。

不只是设置Id 从而覆盖所有其他字段,而是通过Id 加载AssetType 并使用它。

【讨论】:

    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2018-08-16
    • 2013-05-31
    • 1970-01-01
    相关资源
    最近更新 更多