是否可以让JPA从视图读取实体,然后更新表。
举一个例子:

我们有一个从SuppliersInvoice_VW读取的实体。此视图和关联实体将包含InvoiceNo、SupplierCode、SupplierName和value。
用户可以看到以下内容:
发票编号: 1234
供应商:Joes的硬件
价值: 50
这使他意识到值应该是509,因此他相应地进行更新。
发票编号: 1234
供应商:Joes的硬件
价值: 509
这将触发对我们的SuppliersInvoice实体的更新。
我已经映射了@Table("SuppliersInvoice_vw"),这意味着它从SuppliersInvoice_vw读取数据,但这也意味着它将通过该视图进行更新。
是否有办法使JPA从视图( SuppliersInvoice_vw )读取并更新表(SuppliersInvoice)?
另一种策略是只更新视图,但是一直建议我不要太过这样做。该建议是否具有性能基础,还是更符合“通过视图更新时可能出错的问题”的思路。
发布于 2011-12-28 15:18:26
我以前在视图/表和实体中也遇到过同样的问题。我不知道您使用的是什么后端数据库,但在我的例子中,我运行的是PostgreSQL 9.x。为了解决这个问题,我在数据库中创建了触发器,允许我在视图中插入或更新,然后通过触发器适当地更新视图后面的底层表。这样,您仍然可以更新您的SuppliersInvoice实体对象,并像往常一样使用JPA保存更改,但是后端数据库将根据您提供的更新适当地更新真实的表。
这里有一个链接,指向插入/更新/删除规则 9.1中的PostgreSQL文档,这样您就可以自己看到了。
https://stackoverflow.com/questions/8654597
复制相似问题