谁能向我解释为什么Hibernate 默认将 Dynamic insert = false 设置为10,这是什么原因?
@ jb-nizet说了什么。
另外,dynamic-insert="true"在我的书中是个坏主意。
dynamic-insert="true"
从生成的SQL中跳过空字段,很快您将发现自己处于声明列的情况,not null default这实际上导致持久数据与hibernate知道的实体数据不同。这会造成挫败感,并可能使您诉诸昂贵的session.refresh()电话。
not null default
session.refresh()
例如假设列
MESSAGE varchar(64) not null default ''
并且您为映射到此列的属性保存了一个具有空值的实体。
使用dynamic-insert,您将得到一个实体,该实体的内存中属性消息的值为空,而相应的数据库行则带有’‘。
我希望我有道理。特别是如果您正在考虑针对这种情况进行动态插入(以摆脱不必为非null列设置所有属性并依赖默认约束的情况),请再考虑一下。