为什么默认情况下Hibernate不设置@DynamicInsert

谁能向我解释为什么Hibernate @DynamicInsert默认情况下不设置注释,而是允许实体根据当前设置的属性生成INSERT?

什么是不使用的原因@DynamicInsert,因此默认情况下包括所有实体属性?

回答:

@ jb-nizet说了什么。

另外,dynamic-insert="true"在我的书中是个坏主意。

从生成的SQL跳过空字段,很快您将发现自己处于声明列的情况,not null

default这实际上导致持久数据与休眠知道的实体数据不同。这会造成挫败感,并可能使您诉诸昂贵的session.refresh()电话。

例如假设列

MESSAGE varchar(64) not null default ''

并且您为映射到此列的属性保存了一个具有空值的实体。

使用dynamic-insert,您将得到一个实体,该实体的内存中属性消息的值为空,而相应的数据库行则带有’‘。

我希望我有道理。特别是如果您正在考虑针对这种情况进行动态插入(以摆脱不必为非null列设置所有属性并依赖默认约束的情况),请再考虑一下。

以上是 为什么默认情况下Hibernate不设置@DynamicInsert 的全部内容, 来源链接: utcz.com/qa/403445.html

回到顶部