在serviceImpl里使用自身的方法

摘要:
@服务(“tbLeaveRegisterService”)@TransactionPublicClassTbLeaveRegisterServiceImplextendsCommonServiceImplImplementsTbLeave RegisterServiceI{@AutowiredprivatbLeaveRegistryServicetbLeaveRegistrySer

@Service("tbLeaveRegisterService")
@Transactional
public class TbLeaveRegisterServiceImpl extends CommonServiceImpl implements TbLeaveRegisterServiceI {


@Autowired
private tbLeaveRegisterService tbLeaveRegisterService;//类似这种情况会如果需要在这个类里使用自身注解的方法,一定要使用this,而不要定性的去用这个类,因为在自身这里注解还没住进去,所以你如果使用了这个将报空指针。

 
@Autowired
private TbStudentServiceI tbStudentService;

另外说一下关于hibernate的几张表关联使用

先是

 <t:dgCol title="主键"  field="id"  hidden="false"  queryMode="single"  width="120"></t:dgCol>

<t:dgCol title="班级" field="depart.departname"  hidden="true" query="false" queryMode="single"  width="80"></t:dgCol>

一个是主体id 一个是外键id(depart_id)而control需要对分别两个ID赋值并给予不同的modelandvidel。

/**
* 请假新增页面跳转
*
* @return
*/
@RequestMapping(params = "goAddLeave")
public ModelAndView goAddLeave(TbLeaveRegisterEntity tbLeaveRegister, HttpServletRequest req) {
String studentid = oConvertUtils.getString(req.getParameter("studentid"));//学生id
TbStudentEntity student=tbStudentService.getEntity(TbStudentEntity.class, studentid);
/*String departid = oConvertUtils.getString(req.getParameter("departid"));*/
if (StringUtil.isNotEmpty(tbLeaveRegister.getId())) {
tbLeaveRegister = tbLeaveRegisterService.getEntity(TbLeaveRegisterEntity.class, tbLeaveRegister.getId());
req.setAttribute("tbLeaveRegisterPage", tbLeaveRegister);
}

/*tbLeaveRegister.setStudent(student);*/
req.setAttribute("tbStudentPage", student);
/*String departid = oConvertUtils.getString(student.getDepart().getId());*/
/*TSDepart depart=systemService.getEntity(TSDepart.class, departid);
student.setDepart(depart);*/
return new ModelAndView("com/biber/yxyz/leave/tbLeaveRegister-addLeave");
}

/**
* 添加请假登记表
*
* @param ids
* @return
*/
@RequestMapping(params = "doAddLeave")
@ResponseBody
public AjaxJson doAddLeave(TbLeaveRegisterEntity tbLeaveRegister, HttpServletRequest request) {
AjaxJson j = new AjaxJson();
message = "请假登记表添加成功";
try{
String studentid = oConvertUtils.getString(request.getParameter("student.id"));//学生id
String departid = oConvertUtils.getString(request.getParameter("depart.id"));//部门id
TbStudentEntity student=tbStudentService.getEntity(TbStudentEntity.class, studentid);
TSDepart depart=systemService.getEntity(TSDepart.class, departid);
student.setMatter("1");
TSUser user = ResourceUtil.getSessionUserName();
tbLeaveRegister.setCreateuser(user.getUserName());
tbLeaveRegister.setStudent(student);
tbLeaveRegister.setDepart(depart);
student.setLeave(tbLeaveRegister);
tbLeaveRegisterService.save(tbLeaveRegister);
tbStudentService.saveOrUpdate(student);
systemService.addLog(message, Globals.Log_Type_INSERT, Globals.Log_Leavel_INFO);

}catch(Exception e){
e.printStackTrace();
message = "请假登记表添加失败";
throw new BusinessException(e.getMessage());
}
j.setMsg(message);
return j;
}

整个流程差不多是这样。

实体类

@JsonIgnore //getList查询转换为列表时处理json转换异常
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "departid")
public TSDepart getDepart() {
return depart;
}

public void setDepart(TSDepart depart) {
this.depart = depart;
}


@JsonIgnore //getList查询转换为列表时处理json转换异常
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "studentid")
public TbStudentEntity getStudent() {
return student;
}

public void setStudent(TbStudentEntity student) {
this.student = student;
}

过程中主要name不要错就不会有问题了。

免责声明:文章转载自《在serviceImpl里使用自身的方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇angularjs路由程序员不得不知的 Navicat 实用工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

iOS开发(Swift):创建UINavigationView的三种方法

,表示window值我们会赋值。然后创建一个根视图控制器rootViewController,一个导航控制器navigationController。)-˃Bool{//Overridepointforcustomizationafterapplicationlaunch.window=UIWindowwindow.makeKeyAndVisible()ro...

django的优缺点(非原创)

Django做了很多。使用它快速开发一些Web应用程序是很好的。因此,在一些人眼中,Django只不过是一种灵丹妙药,但对一些人来说,它也是一种毒药和剧毒。Django开发人员也讨论并试图支持SQLAlchemy,但最终放弃了。据估计,成本太高,很难与Django的其他模块集成。尽管Django的ORM不如SQLAlchemy强大,但它并不弱。Django的...

java报表实现excel一样冻结表头的功能

增加了几个新的指标,后台sql改了,拿过来只须在一个dao类中修改就足够了,可恨的是客户又提出来改报表表样,加个类似excel冻结表头的功能。...

windows下mstsc 远程Ubuntu 教程

为远程桌面控制设置Ubuntu 16.04的缺点是重新启动系统需要使用监视器登录系统。首先,我们将Ubuntu远程控制设置为允许远程连接,进入系统-˃首选项-˃桌面共享,或直接搜索桌面共享。如图所示,选中此项,然后选中安全项,并设置远程密码。...

建行手机银行4.0版本转账怎么不要求输入支付密码?

建行手机银行单笔限额50万,日限额100万,这个6位数的验证码价值50万元!输入6个数字的支付密码只需要几秒钟而已,转账操作频率不是很高,手机银行转账速度比人工柜台、ATM、电脑网银转账速度不知道快了多少倍,输入6个数字的支付密码这几秒钟相对安全性算什么呢?另外建行还有帐号支付的方式,对电子商户日限额10000元,只需要帐号+手机验证码就可以支付,密码都不用...

DB2锁表或超时解决方案

命令如下:db2"forceapplication"4、使用命令listapplication查看是否已经断开了哪些进行了死锁的进程。...