@JoinColumn 设置为可为空,不可行。|| 懒加载
2016-12-23 10:54
330 查看
最近重构项目想偷懒使用hibernate自动创建表 。
@ManyToOne场景中@JoinColumn 中可设置nullable 但是不管设置为true还是false,该字段均不可为空
后来想了一想确实有了外键关系,该字段是不可为空的。
但是业务需求:任务表关联结果表,但是任务不一定有结果,
这个时候需要级联查询不需要写sql时候【虽然级联每次用到用不到都会查询 lazy除外】
就需要直接关联到结果的,因为一般都是有结果嘛,少年。
有时候标准在可以的时候要为业务让步这样?
再生成表之后:在drop字段 add字段不好,有主外键关系,必须先不检查外键才能drop。
set FOREIGN_KEY_CHECKS = 0;
alter table table_name drop COLUMN vul_plugin_id;
alter table table_name add COLUMN `vul_plugin_id` bigint(20);
SET FOREIGN_KEY_CHECKS = 1;
建议:还是自己source 导出初始化脚本。维护一套表关系,不需要实体自动创建。
懒加载问题:关联查询加载类型lazy,session在service层关闭,序列化bean时报错无法加载代理对象。
增加pom依赖
@primary
@ManyToOne场景中@JoinColumn 中可设置nullable 但是不管设置为true还是false,该字段均不可为空
后来想了一想确实有了外键关系,该字段是不可为空的。
但是业务需求:任务表关联结果表,但是任务不一定有结果,
这个时候需要级联查询不需要写sql时候【虽然级联每次用到用不到都会查询 lazy除外】
就需要直接关联到结果的,因为一般都是有结果嘛,少年。
有时候标准在可以的时候要为业务让步这样?
再生成表之后:在drop字段 add字段不好,有主外键关系,必须先不检查外键才能drop。
set FOREIGN_KEY_CHECKS = 0;
alter table table_name drop COLUMN vul_plugin_id;
alter table table_name add COLUMN `vul_plugin_id` bigint(20);
SET FOREIGN_KEY_CHECKS = 1;
建议:还是自己source 导出初始化脚本。维护一套表关系,不需要实体自动创建。
懒加载问题:关联查询加载类型lazy,session在service层关闭,序列化bean时报错无法加载代理对象。
增加pom依赖
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-hibernate4</artifactId> <version>2.2.3</version> </dependency>
AppConfig.java类中增加以下代码¶
@Bean public ObjectMapper objectMapper() { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); Hibernate4Module hibernate4Module = new Hibernate4Module(); hibernate4Module.disable(Hibernate4Module.Feature.USE_TRANSIENT_ANNOTATION); objectMapper.registerModule(hibernate4Module); objectMapper.setSerializationInclusion(Include.NON_NULL); return objectMapper; }
@primary
相关文章推荐
- 设置SAP HANA列表的预加载(SAP HANA preload setting for column storage )
- 加载设计器错误——未将对象引用设置到对象的实例 之解决方法
- 服务器端动态加载DataGrid控件并设置其属性
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- 重写datagridtextboxcolumn实现设置显示与实际列值!(例如性别的显示)
- outer-join属性并不简单 ,请大家谨慎设置outer-join=true
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- Firefox - 附加软件 - Firebug - Script脚本视图 - 在页面加载过程中的脚本设置断点
- DataColumn.Expression 属性 获取或设置表达式,用于筛选行、计算列中的值或创建聚合列。
- 设置 Tomcat 自动重新加载 web 应用程序
- 设置XmlLocation后XmlFormView加载时出错解决办法
- .NET / Rotor源码分析5 - 开始使用WinDbg+SOS调试,sscoree.dll,加载SOS并设置JIT断点
- 2008年3月小记(设置Windows服务的依赖关系,配置MSMQ的访问权限,WCF的安全配置,删除重建网站,HttpWebRequest,一年中的周,在WCF中使用HttpContext,String.Join)