为什么默认情况下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