- 博客(11)
- 收藏
- 关注

原创 detached entity passed to persist问题与解决方案
JPA save对象的时候有时候会遇到如题的错误,可能有两种原因:1.该对象定义的是自动生成id的方式,insert的时候写入的id在数据库中已存在。 网上搜到的比较多的都是这种情况,但个人认为,实际项目中这么玩的情况很少,生成新对象谁会自己写入id。2.笔者实际项目遇到的场景:对象A与对象B为一对多关系,即A中包含一个Set<B>类型成员,前端传来一堆数据,后台把这...
2018-08-28 17:58:31
36001
7
原创 JPA懒加载失败问题解决
在使用JPA或者Hibernate的时候,我们经常用懒加载来提高访问效率,例如:Class A { @OneToMany(mappedBy = "a",fetch=FetchType.LAZY) private Set<B> objBs;}A对象中懒加载B对象。典型的使用场景:A a = repository.findA(...);...Se...
2019-01-07 15:43:06
2177
原创 记录操作日志的一般套路
记录操作日志是web系统做安全审计和系统维护的重要手段,这里总结笔者在用java和python开发web系统过程中总结出来的、具有普遍意义的方法。在java体系下,网络上搜索了一下,几乎一边倒的做法是用AOP,通过注解的方式记录操作日志,在此,笔者并不是很认同这种做法,原因如下:AOP的应用场景是各种接口中可以抽象出普遍的行为,且切入点选择需要在各接口中比较统一。 记录审计日志除了ip、...
2018-11-24 17:17:41
17206
4
原创 封装类型变量比较问题
现象:code review中发现有代码中用下面的方式比较Integer变量:这种方式是有风险的,当整型数据的值超出-128-127的范围时,两个值相同的Integer变量用==比较会返回false。来看看测试结果:原因分析:在Integer类中有一个IntegerCache类,来看看这个类的说明:IntegerCache中定义了一个Integer数组,初始化-...
2018-11-23 10:06:18
326
原创 REST知识总结
近期code review过程中发现部分小伙伴对REST不甚了解,这里进行一次简单的科普。首先,REST不是“协议”,甚至称不上“规范”,只能称为一种“原则”,或者一种“实践”。这句话隐含的意思就是,你抛弃REST的这些原则并不会影响你接口功能的完成。这就好比,“拿起筷子,把食物塞进嘴里”这一连串动作,正常人类叫做“吃(eat)”,你如果偏要叫“睡觉(sleep)”,并不会影响你完成这些动...
2018-11-23 10:02:03
361
原创 基于scrum的敏捷开发流程总结
本文主要来源于华为软件开发流程,同时根据在创业团队的实践在细节上稍有修改。需求管理先了解几个概念:IR(Initial Requirement):原始需求。这种需求来自客户,一般由产品经理/需求经理编写。如果是研发内部产生的需求,可以不需要有IR。SR(System Requirement):系统需求。架构师对IR进行分析以后,结合系统设计,将需求描述成一个个要实现的子系统或者模块...
2018-11-05 16:39:40
10994
1
原创 软件开发中,站立会议的必要性
笔者经历过大到600人、小到20人的项目团队,很多团队中会引入敏捷尤其是scrum实践,其中一个重要的实践是站立会议,遇到过团队成员抱怨站立会议浪费时间,甚至在有些团队中leader也持这种观点,最后坚持不了几次就不了了之了。那么,站立会议(甚至说敏捷)是否有必要呢? 我很能理解团队成员抱怨站立会议浪费时间,开发人员是软件工程的直接实施者,他们的感受一定是来源于实...
2018-10-11 20:44:02
1740
原创 java深拷贝的三种方式
问题:spring boot/JPA项目中,修改某个对象以后需要生成一个VO对象给客户端,数据库对应的POJO对象里有个Map类型的对象(名字叫para),这个对象的value又是个Map,我使用Map的putAll()方法拷贝了一份para,然后修改里面的值,最后发现para的内容也被修改了。示例代码如下:this.para.putAll(po.getPara());// fields是...
2018-09-18 11:45:27
38106
2
原创 JPA分页查询总数计算错误问题(自定义Repository实现的方法)
问题背景: 上一篇博客(JPA排序中的join排序及case when的使用)中有提到一个场景:对象A中包含了Set<B> objBs这样一个成员,要求查询A时按A中包含的B数量排序,当时的解决方案是count一下B,然后order by这个count,详见上一篇博客。 上面的方法确实解决了排序的问题,但是经过多次测试发现,当按照objBs排序、查询第一页时,数据正...
2018-08-03 17:10:14
8843
4
原创 JPA排序中的join排序及case when的使用
最近项目中开始使用JPA,使用过程中有两个排序场景遇到的问题,在此将问题及解决方法作一个记录。先抛出问题:model类A中包含Set<B>成员,即一对多关系,要求查询A的时候按A包含的B对象个数来排序。 model类A中包含一个String subType字段,该字段在数据库中保存的是"00/01/11"这样的数字字符串数据,但是在界面显示的是中文描述信息,这个中文描述信息与...
2018-08-01 21:21:01
2871
原创 一种根据ProtoBuf字段变化动态解析PB数据的方案
需求分析 先来回顾一下解析PB数据的常规流程:先定义好proto文件,然后使用protoc工具生成java代码,再使用生成的代码里的parseFrom方法去解析PB数据。 有这样一种场景,使用过程中,PB数据定义有变更,比如增删改了字段,常规方法是修改proto文件,重新生成java代码重新打包。那么需求来了,能不能做到做到PB数据字段变更后不打包、仅重启进程就能解析新的数据呢?解决方...
2018-04-24 18:23:31
3856
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人