您的位置:首页 > 其它

@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依赖

<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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐