在serviceImpl里使用自身的方法

@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="班级" align="center" 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不要错就不会有问题了。

时间: 2024-11-06 16:15:23

在serviceImpl里使用自身的方法的相关文章

C#,往线程里传参数的方法总结

C#,往线程里传参数的方法总结 Thread (ParameterizedThreadStart) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托.   Thread (ThreadStart) 初始化 Thread 类的新实例.  由 .NET Compact Framework 支持.  Thread (ParameterizedThreadStart, Int32) 初始化 Thread 类的新实例,指定允许对象在线程启动时传递给线程的委托,并指定线程的最大堆栈

JS删除String里某个字符的方法

关于JS删除String里的字符的方法,一般使用replace()方法.但是这个方法只会删除一次,如果需要将string里的所以字符都删除就要用到正则. var str = "abcdaabbssaaa"; var reg = new RegExp("a","g"); var a = str.replace(reg,""); console.log(a); 这里用 new RegExp()这个方法创建正则,第一个参数"

PHPnow开启PHP扩展里openssl支持的方法

PHPnow 是 Win32 下绿色的 Apache + PHP + MySQL 环境套件包.简易安装.快速搭建支持虚拟主机的 PHP 环境.更多介绍<PHP服务套件 PHPnow1.5.6>及安装<PHPnow 快速搭建Apache+PHP+MySQL环境 >.下面将分享PHPnow开启PHP扩展里openssl支持的方法. 打开你集成包的文件夹,找到“/php-5.2.x-Win32/php-apache2handler.ini”这文件,随便用记事本打开,查找 ;extensi

jquery里互为逆过程的方法

jquery里互为逆过程的方法reverse 在jquery里,有不少互为逆过程的方法,如parent()与children(),parents()与find(),first()和last()等,这些联合起来有助于理解. 一 children()和parent() 这是一对遍历dom的jquery方法,这两个方法只查找元素的上一级或者下一级,接受selector参数.不会继续向上或者向下查找.eg: html: <div>grandfather <div>parent <di

jquery里正则的使用方法及常用的正则验证

本文是一篇关于jquery使用正则来验证输入,及一些常用验证规则的基础文章,适合新手. 假设我们的网页里有这样的一个表单: <input id="aijquery" type="text"> <button id="btn">验证</button> 1.验证用户输入的只能是英文和数字: $("#btn").click(function(){ var $aijquery=$("#ai

【MM系列】在SAP里查看数据的方法

公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]在SAP里查看数据的方法 前言部分 大家可以关注我的公众号,公众号里的排版更好,阅读更舒适. 需求分析 有些时候我们会对采购订单或者销售订单中的条件问题进行多次分析,无论是消息输出类型还是定价条件或税收条件,当然很多时候我们可以通过查找条件记录的存储表,来查看数据进行分析,这是其中的一种方法,比较直接,但是有的时候却显得不是很方便,要

Django在模版里显示当前日期的方法的代码

在代码过程中,把开发过程比较重要的内容记录起来,下面的代码内容是关于Django在模版里显示当前日期的方法的代码,希望对小伙伴有用. {% now "Y-m-d" %} 显示:2013-05-01 {% now "Y" %} 显示:2013 原文地址:https://www.cnblogs.com/Wladybird/p/11230963.html

整理几种在axure里使页面居中的方法

1. 用动态面板固定浏览器功能. 很简单方便. 但缺点是 当浏览器窗口大小小于页面时, 由于会强制居中,导致页面2边是在显示范围外并且是无法通过滚动条滚动的(滚动条是没有的). 2. 使用页面属性里的居中功能. 也非常方便. 但不能适用 浏览器窗口大小小于页面的情况. 会恢复成居左. 一般的页面用这种方法足够用了. 3. 如果一定要通用各种情况,并且能滚动显示全部范围. 可以在页面上发个透明的元件(例如矩形), 然后页面载入和窗口大小改变时,移动该元件的x 到 [[(页面.width-windo

Unity里延迟执行的方法

在Unity中,延时执行一段代码或者一个方法或者几个方法的情况非常普遍. 一般会用到Invoke和InvokeRepeating方法.顾名思义,第一个是执行一次,第二个是重复执行. 看下定义: void Invoke(string methodName, float time); 第一个参数是方法名(注意是字符串形式),并不是更方便的委托.第二个是延时多少秒.只执行一次. void InvokeRepeating(string methodName, float time, float repe