数据库更新后模型类出现问题,

Posted

技术标签:

【中文标题】数据库更新后模型类出现问题,【英文标题】:Issue with model classes after database updates, 【发布时间】:2020-09-18 02:48:22 【问题描述】:

我创建了一个可以对数据库执行 DML 操作的应用程序。现在有一个条件是用户在该数据库中创建了新表(通过使用前端)但由于模型类不可用而无法访问该表,因此 JAVA 中有任何类型的框架可以执行这种类型没有相应模型类依赖关系的操作。

简而言之,有没有什么框架可以在没有模型类的情况下处理所有类型的 DLL 和 DML 操作? 我知道它的愚蠢问题。

【问题讨论】:

我认为这是一个很好的问题,我也想知道。 你可以使用纯 JDBC。 【参考方案1】:

我将为您标记问题的几个 API 以及 JDBC 提供答案:

JPA

JPA 在编译时需要一个模型(技术上是在您加载实体时),因此它不适用于像您这样的临时模型。当然,您可以使用运行时 Java 编译并动态加载那些运行时生成的实体,但这似乎相当复杂。

jOOQ

jOOQ 可以按照说明的方式工作,例如在教程中。你可以使用 jOOQ:

without code generation with code generation

在 jOOQ 中,生成的代码是完全可选的,为您的客户端代码添加了额外的类型安全性,但您不必使用它。所有 DDL 和 DML 语句都可以用ad-hoc identifiers 甚至plain SQL templating 表示。

JDBC

使用 Java/Spring/等时。您始终可以使用 JDBC,这是大多数上述 API 在幕后使用的较低级别的 API。在 Spring 中,在 JDBC 之上还有一个名为 JdbcTemplate 的瘦 API,这使得使用 JDBC 更加方便。

(免责声明:我为 jOOQ 背后的公司工作)

【讨论】:

非常感谢@lukas 这就是我要找的东西

以上是关于数据库更新后模型类出现问题,的主要内容,如果未能解决你的问题,请参考以下文章

关于 “支持“XXXDBContext”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库” 的解决办法

利用分布类防止EF更新模型丢失验证信息

更新核心数据模型后出错 - 无法识别的选择器发送到实例

laravelEloquent 模型事件和监听方式

支持“xxx”上下文的模型已在数据库创建后发生更改。请考虑使用 Code First 迁移更新数据库

从数据模型更新 NSManagedObject 类定义