【问题标题】:In Spring Data JPA, How to add an Entity during runtime ?在 Spring Data JPA 中,如何在运行时添加实体?
【发布时间】:2014-09-22 08:11:48
【问题描述】:

在我的业务中,我将为 MySQL 动态创建模型和存储库。 我已成功创建并编译了 java 文件。然后使用 beanfactory 为存储库和服务注册 bean。 但我不知道如何映射实体。我搜索了一些类似的问题,但没有一个干净的解决方案。 谁能帮我看一些代码示例?

【问题讨论】:

  • 您确定您的用例需要在运行时动态添加新实体(并更改数据库架构)。我会假设您正在尝试构建一个与关系数据库不太匹配的设计。
  • 是的,这是要求。我需要同时支持 NoSQL 和 RDBMS

标签: java spring jpa runtime entity


【解决方案1】:

JPA 主要使用静态模式。这有充分的理由,请参阅 www.java.net/node/666078 上的讨论。

我只知道 3 个解决方案:

1) 将您的域模型重构/更改为静态(最好的方法,但在某些实际情况下,您确实需要至少 1 或 2 个动态表)

2) 对动态表使用原生查询和@SqlResultSetMapping(这是我在这种特殊情况下使用的解决方案)

3) 使用 Jpa 提供者非可移植的特定方式(实际上不是 JPA)参见例如 http://www.infoq.com/articles/hibernate-custom-fields

【讨论】:

  • 感谢您的回复。 (2)可以支持动态创建表吗?
  • 是的。例如通过 em.createNativeQuery("CREATE TABLE SAMPLE_TABLE(SOME_ID BIGINT NOT NULL)").executeUpdate();稍后使用 ALTER TABLE ...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-21
  • 2018-09-18
  • 2020-08-19
  • 2015-07-14
  • 2017-02-06
  • 1970-01-01
相关资源
最近更新 更多