gpt4 book ai didi

java - JPA:从 View 更新表中读取

转载 作者:行者123 更新时间:2023-12-02 08:02:47 25 4
gpt4 key购买 nike

是否可以让 JPA 从 View 中读取实体,然后更新表。

举个例子:

Sample Schema

我们有一个从SuppliersInvoice_VW读取的实体。此 View 和关联实体将包含 InvoiceNo、SupplierCode、SupplierName 和值。

用户看到的内容如下:

发票号码:1234
供应商:Joes' Hardware
值(value):50

这让他意识到该值应该是 509,因此他进行了相应更新

发票号码:1234
供应商:Joes' Hardware
值(value):509

这会触发我们的SuppliersInvoice实体的更新。

我已经映射了@Table("SuppliersInvoice_vw"),这意味着它从SuppliersInvoice_vw读取数据,但这也意味着它将通过该 View 进行更新。

有没有办法让 JPA 从 View (SuppliersInvoice_vw)读取并更新表(SuppliersInvoice)?

替代策略是仅更新 View ,但我总是被建议不要这样做。这个建议是否有性能基础,或者更类似于“注意通过 View 更新时可能出现的问题”。

最佳答案

我认为用 JPA 透明地做你想做的事情是不可能的。

JPA 规范只允许每个 @Entity 有一个 @Table。处理此问题的最简单(也是最便携)的方法可能是拥有两个独立的 @Entity 类,一个用于 View ,一个用于表,具有相似的属性,然后根据需要选择使用哪一个。取决于你是在阅读还是在写作。

如果属性对齐,您可以使用 commons BeanUtils.copyProperties 从 View 初始化可写对象。

本质上,任何映射到数据库 View 的只读实体都类似于 DTO,您也可以将其视为 DTO。

关于java - JPA:从 View 更新表中读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8654597/

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