关于springmvc+hibernate的问题

问题描述

使用springmvc+hibernate用注解配置实体类的时候,我不使用hbm了,完全使用注解的方式不过有些实体类具有外键关系,怎么使用注解配置多对多,一对多的关系,真不知道该怎么写,百度上很难找到这类的信息有哪位大神来解释下呗?另外还有一个关于日期传递的问题代码如下实体类:@Entity@Table(name="user")publicUser{intid;//id在数据库中设置为自增了Stringname;Java.util,Datedate;publicUser(){}//getset方法就略过吧}jsp:<formid="addForm"action="/Demo/addUser"method="post"><inputtype="text"name="name"><inputtype="text"name="date"value="2014-12-1816:22:22">//这个其实是用控件获得,不过现在先给他一个默认值<inputtype="submit"></form>controller:我原来希望使用springmvc的自动绑定功能@RequestMapping("/addUser")publicStringaddEvent(Useruser){userService.save(user);//userService就是一个简单的调用dao层的service层对象,save就是单纯的添加}这样会报错,传递参数,日期的date会变成空,编号400的错误,把日期当做普通数据接收,在后台转换后赋值就可以,如下:@RequestMapping("/addUser")publicStringaddEvent(Stringname.Stringdate){Useruser=null;SimpleDateFormatsim=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");try{Datedate2=sim.parse(date);user.setName(name);user.setName(date2);userService.save(user);}catch(ParseExceptione){e.printStackTrace();}}但是这样做,就没法使用springmvc的自动绑定了..找了好久,有人有一样的问题,但是他们的解决方法都不行,,搞了好久,,有人有有亲身经验吗?求大神指点呀.万分感谢

解决方案

解决方案二:
@ManyToOne@JoinColumn(name="外键")get方法set方法
解决方案三:
引用1楼u011514731的回复:

@ManyToOne@JoinColumn(name="外键")get方法set方法

外键?怎么写,我还没有建表,我希望他自动帮我创建,比如我User表内:List<Teacher>teachers;就这个要怎么写?
解决方案四:
你把对象间的关系描述清楚下user和teacher一对多??
解决方案五:
引用3楼u011514731的回复:

你把对象间的关系描述清楚下user和teacher一对多??

多对多,一个学生有多个老师教,一个老师教多个学生,他们实体类中都有一个list对象,存放对放的对象集合
解决方案六:
对于多对多的关系,一般都会建个中间表,换成一对多的关系。一对多的关系:主表model参考如下代码@NotCloneprivatetransientList<子表对象>子表集合=newArrayList<子表对象>();@OneToMany(fetch=FetchType.LAZY,mappedBy="主表实例")@JoinColumn(name="子表id")publicList<子表>get(){}publicvoidset(List<子表>s){}子表model@ManyToOne@JoinColumn(name="主表id")public主表对象get(){}set(){}下班了,你先看看,明天再说
解决方案七:
引用5楼u011514731的回复:

对于多对多的关系,一般都会建个中间表,换成一对多的关系。一对多的关系:主表model参考如下代码@NotCloneprivatetransientList<子表对象>子表集合=newArrayList<子表对象>();@OneToMany(fetch=FetchType.LAZY,mappedBy="主表实例")@JoinColumn(name="子表id")publicList<子表>get(){}publicvoidset(List<子表>s){}子表model@ManyToOne@JoinColumn(name="主表id")public主表对象get(){}set(){}下班了,你先看看,明天再说

恩我去试试,
解决方案八:
引用5楼u011514731的回复:

对于多对多的关系,一般都会建个中间表,换成一对多的关系。一对多的关系:主表model参考如下代码@NotCloneprivatetransientList<子表对象>子表集合=newArrayList<子表对象>();@OneToMany(fetch=FetchType.LAZY,mappedBy="主表实例")@JoinColumn(name="子表id")publicList<子表>get(){}publicvoidset(List<子表>s){}子表model@ManyToOne@JoinColumn(name="主表id")public主表对象get(){}set(){}下班了,你先看看,明天再说

说来,,其实我想要的是多对多呀,,不是一对多...
解决方案九:
@ManyToMany(targetEntity=teacher.class,              cascade={CascadeType.MERGE,CascadeType.PERSIST}  )  @JoinTable(name="student_teacher",             joinColumns={@JoinColumn(name="student_id")},             inverseJoinColumns={@JoinColumn(name="teacher_id")}  )private Set teacher;set{}get{}
解决方案十:
引用8楼u011514731的回复:

  @ManyToMany(targetEntity=teacher.class,              cascade={CascadeType.MERGE,CascadeType.PERSIST}  )  @JoinTable(name="student_teacher",             joinColumns={@JoinColumn(name="student_id")},             inverseJoinColumns={@JoinColumn(name="teacher_id")}  )private Set teacher;set{}get{}

Role表:@Entity@Table(name="role_info")publicclassRole{@Id@GeneratedValue(generator="paymentableGenerator")@GenericGenerator(name="paymentableGenerator",strategy="native")privateintrole_id;privateList<Permission>permissions=newArrayList<Permission>();publicRole(){}publicintgetRole_id(){returnrole_id;}publicvoidsetRole_id(introle_id){this.role_id=role_id;}@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)@JoinTable(name="Role_Permission",joinColumns={@JoinColumn(name="Role_id",referencedColumnName="role_id")},inverseJoinColumns={@JoinColumn(name="Permission_id",referencedColumnName="permission_id")})publicList<Permission>getPermissions(){returnpermissions;}publicvoidsetPermissions(List<Permission>permissions){this.permissions=permissions;}}Permission表:@Entity@Table(name="permission_info")publicclassPermission{@Id@GeneratedValue(generator="paymentableGenerator")@GenericGenerator(name="paymentableGenerator",strategy="native")privateintpermission_id;privateList<Role>roles=newArrayList<Role>();publicPermission(){}publicintgetPermission_id(){returnpermission_id;}publicvoidsetPermission_id(intpermission_id){this.permission_id=permission_id;}@ManyToMany(cascade=CascadeType.PERSIST,fetch=FetchType.LAZY)@JoinTable(name="Role_Permission",joinColumns={@JoinColumn(name="Permission_id",referencedColumnName="permission_id")},inverseJoinColumns={@JoinColumn(name="Role_id",referencedColumnName="role_id")})publicList<Role>getRoles(){returnroles;}publicvoidsetRoles(List<Role>roles){this.roles=roles;}}就是这样的两个实体类,,运行后会出错org.hibernate.MappingException:Couldnotdeterminetypefor:java.util.List,attable:permission_info,forcolumns:[org.hibernate.mapping.Column(roles)]
解决方案十一:
引用8楼u011514731的回复:

  @ManyToMany(targetEntity=teacher.class,              cascade={CascadeType.MERGE,CascadeType.PERSIST}  )  @JoinTable(name="student_teacher",             joinColumns={@JoinColumn(name="student_id")},             inverseJoinColumns={@JoinColumn(name="teacher_id")}  )private Set teacher;set{}get{}

等下..我现在不会报错了,,但是数据库里面也没有多外键,,这是什么回事?
解决方案十二:
import看看是不是这样的importjava.util.ArrayList;importjava.util.List;importjavax.persistence.CascadeType;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.JoinTable;importjavax.persistence.ManyToMany;importjavax.persistence.Table;importorg.hibernate.annotations.Entity;importorg.hibernate.annotations.GenericGenerator;
解决方案十三:
引用11楼u011514731的回复:

import看看是不是这样的importjava.util.ArrayList;importjava.util.List;importjavax.persistence.CascadeType;importjavax.persistence.FetchType;importjavax.persistence.GeneratedValue;importjavax.persistence.Id;importjavax.persistence.JoinColumn;importjavax.persistence.JoinTable;importjavax.persistence.ManyToMany;importjavax.persistence.Table;importorg.hibernate.annotations.Entity;importorg.hibernate.annotations.GenericGenerator;

恩一样的,,,有人说要自己建表,自己建中间表,自己建外键,要这样才能实现多对多关系吗,这么麻烦
解决方案十四:
/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

至于为什么我也不是特别清楚!
解决方案十五:
引用13楼Acana_Dendi的回复:

/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

至于为什么我也不是特别清楚!

这个能用?我好似试过,不行的
解决方案:
如果是配置不会写的话,建议用hibernate的反向生成,可直接生成一对多,多对一的关系,
解决方案:
引用15楼qq510992555的回复:

如果是配置不会写的话,建议用hibernate的反向生成,可直接生成一对多,多对一的关系,

反向生成吗,我也想这样,,可是不知道为什么不会自动建表..看不懂呀
解决方案:
引用14楼horizon47的回复:

Quote: 引用13楼Acana_Dendi的回复:
/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

至于为什么我也不是特别清楚!

这个能用?我好似试过,不行的

能用啊,我晒下完整的。publicclassBaseController{/***SpringMVC自定义字段类型*@paramrequest*@parambinder*@throwsException*/@InitBinderprotectedvoidinitBinder(HttpServletRequestrequest,ServletRequestDataBinderbinder)throwsException{BinderDate(binder);}/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

在你要写的Controller中继承BaseController,再重写这个方法/***重写转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

解决方案:
引用17楼Acana_Dendi的回复:

Quote: 引用14楼horizon47的回复:
Quote: 引用13楼Acana_Dendi的回复:
/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

至于为什么我也不是特别清楚!

这个能用?我好似试过,不行的

能用啊,我晒下完整的。publicclassBaseController{/***SpringMVC自定义字段类型*@paramrequest*@parambinder*@throwsException*/@InitBinderprotectedvoidinitBinder(HttpServletRequestrequest,ServletRequestDataBinderbinder)throwsException{BinderDate(binder);}/***转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");CustomDateEditoreditor=newCustomDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

在你要写的Controller中继承BaseController,再重写这个方法/***重写转换时间格式*@parambinder*/protectedvoidBinderDate(ServletRequestDataBinderbinder){DateFormatdf=newSimpleDateFormat("yyyy-MM-dd");CustomDateEditoreditor=newDateEditor(df,false);binder.registerCustomEditor(Date.class,editor);}

呀..我试试I哈
解决方案:
引用

horizon47

行了不
解决方案:
引用19楼Acana_Dendi的回复:

引用
horizon47

行了不

还没试,,早上有别的事要做...说来你是怎么选择框架版本的,比如选择spring3.2+hibernate3.2...能说出为什么吗
解决方案:
引用20楼horizon47的回复:

Quote: 引用19楼Acana_Dendi的回复:
引用
horizon47

行了不

还没试,,早上有别的事要做...说来你是怎么选择框架版本的,比如选择spring3.2+hibernate3.2...能说出为什么吗

Spring3.1+Hibernate3.3,百度搜下customdateeditor就知道了
解决方案:
引用21楼Acana_Dendi的回复:

Spring3.1+Hibernate3.3,百度搜下customdateeditor就知道了

这和版本有什么关系哦...我只是想知道选择这些版本的依据
解决方案:
引用22楼horizon47的回复:

Quote: 引用21楼Acana_Dendi的回复:
Spring3.1+Hibernate3.3,百度搜下customdateeditor就知道了

这和版本有什么关系哦...我只是想知道选择这些版本的依据

我今年刚入职,框架也是老大搭的,一直用着这个框架。
解决方案:
引用23楼Acana_Dendi的回复:

Quote: 引用22楼horizon47的回复:
Quote: 引用21楼Acana_Dendi的回复:
Spring3.1+Hibernate3.3,百度搜下customdateeditor就知道了

这和版本有什么关系哦...我只是想知道选择这些版本的依据

我今年刚入职,框架也是老大搭的,一直用着这个框架。

我也刚入职(其实才实习)我是做了一个小项目,然后老大看的时候,问我为什么选择spring3.2,.,我直接蒙了,,我都是随便拿过去的项目版本来用的
解决方案:
引用19楼Acana_Dendi的回复:

引用
horizon47

行了不

说来真的可以哦但是...如果是这样的怎么办SimpleDateFormatsim=newSimpleDateFormat("yyyy-MM-ddhh:mm:ss");SimpleDateFormatsimwarn=newSimpleDateFormat("yyyy-MM-dd");

我需要他传过来两种的时间类型...我实体类中一个是sql的date.一个是util的...

时间: 2024-10-21 10:45:20

关于springmvc+hibernate的问题的相关文章

springmvc+hibernate 实体类映射错误

问题描述 springmvc+hibernate 实体类映射错误 type Exception report message Request processing failed; nested exception is org.hibernate.hql.ast.QuerySyntaxException: Users is not mapped [from Users u where u.loginName='ss' and u.password='aa'] description The se

Maven搭建SpringMVC+Hibernate项目详解(转)

  前言      今天复习一下SpringMVC+Hibernate的搭建,本来想着将Spring-Security权限控制框架也映入其中的,但是发现内容太多了,Spring-Security的就留在下一篇吧,这篇主要搭建SpringMVC4.1.4和Hibernate4.3.8,之前也打了好多SpringMVC的,这部分已经非常的熟悉了,毕竟业开发过一年多SpringMVC的,这次持久层采用Hibernate,数据源采用c3p0,数据库暂采用MySQL,主要是想复习一下Hibernate.搭

懒加载session-多数据源springmvc+hibernate 切换问题 在一次请求中多次切换不成功

问题描述 多数据源springmvc+hibernate 切换问题 在一次请求中多次切换不成功 最近写了一个多数据源的代码,结果在使用的过程中出现了在一个请求中(方法中)两个数据库交替使用的情况,最后情况是数据库切换不过来 并且在项目配置中有懒加载和OpenSessionInViewFilter 数据库一个为本地数据库一个为基金数据库 要做的事情就是在本地查询到基金代码接着再循环去基金库查询基金数据 中间报错为在本地数据库中查询不到某个表(其实是在基金库中) controller层 @Reque

springmvc+hibernate服务器上报错,本地没问题

问题描述 springmvc+hibernate服务器上报错,本地没问题 使用springmvc+hibernate在服务器上部署的时候,访问控制器,能够进入控制器打出日志.但是无法显示页面.同时报错. org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NullPointerException

Spring+SpringMVC+Hibernate 开启事务为何无反应?(已贴代码)

问题描述 问题说明:使用Spring+SpringMVC+Hibernate架构来做个练习的时候,就出错了...按道理说这个问题,只需要配置一个事务就可以了,但是配置了还是出错...求解...===========================================================================新增用户出错=========================================================================

hibernate4-求助大神,spring.springMvc.hibernate整合。并且全是注解

问题描述 求助大神,spring.springMvc.hibernate整合.并且全是注解 实在找不到教程,望能提供和完整的教程,视频最好 解决方案 给你了你就跑了不采纳怎么办?所以如果需要教程,请先采纳下姐姐的回答,姐姐这就给你. 解决方案二: 慕课网上找找,还有csdn学院里面找找,传智播客的视频教程 找找总有的.现在网络资源这么丰富,勤快耐心点,学习资源还是一大堆的.祝好! 解决方案三: 这个从网上搜吧.去git 里面找个下载. 解决方案四: http://v.youku.com/v_sh

spring mvc-谁有 springmvc+hibernate的写计划功能的项目

问题描述 谁有 springmvc+hibernate的写计划功能的项目 谁有 springmvc+hibernate的写 计划 任务 功能的项目 解决方案 唉 有这种类型的也可以的 解决方案二: 计划任务?定时任务吗?可以试试quartz

java类的问题-struts+springmvc+hibernate有没有页面登陆和注册的代码和数据库??

问题描述 struts+springmvc+hibernate有没有页面登陆和注册的代码和数据库?? struts+springmvc+hibernate有没有页面登陆和注册的代码和数据库??有没有实现增删改的代码啊?网上的不能实现运行 解决方案 你耐心再找找,换做我也是从网上找,不能用是环境问题,还是啥的,把他解决不就行了 解决方案二: struts+springmvc 都是控制层 不可能一起使用 解决方案三: 好像网上搜的里面加有东西..不能运行..要怎么办?你有案例吗?能发给我一下吗?谢谢

spring mvc-使用MyEclipse集成SpringMVC+Hibernate运行的时候提示这个错误是为什么啊?

问题描述 使用MyEclipse集成SpringMVC+Hibernate运行的时候提示这个错误是为什么啊? 严重: Exception starting filter struts2Unable to load configuration. - bean - jar:file:/D:/MyEcWorkSpa2015/.metadata/.me_tcat7/webapps/TestSSH/WEB-INF/lib/struts2-core-2.2.1.jar!/struts-default.xml