Hibernate实体类中属性的映射

我的实体类的其中一个属性的类型是InputStream,映射文件中type要为什么?可以是mediumblob吗?

2个回答

搞什么鬼,实体类的属性类型时InputStream???
难道不应该是byte[]吗?blob什么的也好……inputStream是一个流,它就不是用来储存数据信息的啊喂
如果有必要保存一个“从某个地方读取流”这样的信息,那就存储一个url或者String,取出来之后重新建立链接啦

InputStream类型不是数据库支持的类型,实体类中定义为Blob/Clob才是,其对应的数据库类型Blob。
大数据类型java提供了java.sql.Blob类型,实体类定义为这个类型就可以了,它可以通过InputStream来创建的。

FileInputStream fis = new FileInputStream(path);        
 Blob photo  = Hibernate.createBlob(fis); 

Hibernate映射关系:

 <property name="photo" type="blob">  
  <column name="photo" />  
</property>  

映射类型还是blob,这个是对应的sql的类型的别名就是blob.

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
springmvc+springjdbc 实体类,表的映射关系
如题。没用hibernate。 我的实体类和表的对应关系 我的属性和字段名称的对应关系。 rowmapper我知道。但是公司要求用注解。 我自定义注解。公司说spring原生有。 到底是什么呢。怎么用呢。
hibernate3.2 映射特殊映射问题.
我想做一个部门的实体类,想达到这样的目地,想用一个表完成上级部.还有他的下属部门!都在一个表里边映射.用递归办法去查询. 实体如下: public class Organization implements Serializable { private static final long serialVersionUID = 7501283407841925933L; private int id; private String name; private String sn; private String description; private Organization parent; private Set<Organization> children; } set,get方法不写了,Organization parent这个属性做最上级部门,Set<Organization> children属性做他下边的子部门 放到Set集合里边去! hibernate3.2映射文件如下: [b]<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.oa.model.Organization" dynamic-update="true" dynamic-insert="true" batch-size="3"> <id name="id"> <generator class="native" /> </id> <property name="name" length="255" not-null="true" /> <property name="sn" not-null="true"/> <property name="description"/> <many-to-one column="pid" name="parent" class="com.oa.model.Organization" cascade="save-update"/> <set name="children" table="chlidrenOrg" inverse="true" cascade="save-update"> <key column="pid" /> <one-to-many class="com.oa.model.Organization"/> </set> </class> </hibernate-mapping> 请问能不能在一个实体里自已做多对一映射,我做了测试能正确存到数据库中去,但是取的时候Set集合是NULL,就是关联不上. 但是我看人家Hibernate3.3做的视频就可以正确取出数据来,我用的是hibernate3.2版本,取不出来set集合的东西. 以下是做Juint单元测试: public class OrgTest extends TestCase { Session session=null; public void testOrg1(){ try { session=HibernateUtil.currentSession(); session.beginTransaction(); Set<Organization> set= new HashSet<Organization>(); Organization org2=new Organization(); org2.setName("软件开发部"); org2.setSn("2"); set.add(org2); Organization org3=new Organization(); org3.setName("网络集成部门"); org3.setSn("3"); set.add(org3); Organization org4=new Organization(); org4.setName("销售部门"); org4.setSn("4"); set.add(org4); Organization org1=new Organization(); org1.setName("阳光科技有限公司"); org1.setSn("1"); //org1做为顶级部门把下级部门放到达Set集合里去; org1.setChildren(set); session.save(org1); session.save(org2); session.save(org3); session.save(org4); session.getTransaction().commit(); } catch (Exception e) { e.printStackTrace(); session.beginTransaction().rollback(); }finally{ HibernateUtil.closeSession(); } } public void testOrgLoad(){ Session session=null; try{ session=HibernateUtil.currentSession(); session.beginTransaction(); Organization org=(Organization) session.load(Organization.class,1); System.out.println(" 顶级部门名字:"+org.getName()+";"+"set集合的大小:"+org.getChildren().size()); Set<Organization> set=org.getChildren(); System.out.println(set.toString()); for(Organization org1 : set){ System.out.println(org1.getName()); } session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); HibernateUtil.rollbackTransaction(); }finally{ HibernateUtil.closeSession(); } } } public void testOrg1()方法可以正确放入数据库,但是数据库里没有Pid关联,按上边的映射文件写的那样,应该Pid有关联的,但是数据库里没有? public void testOrgLoad()方法看一看能不能把顶级部门的下级部门取出来,可以结果如下: 顶级部门名字:阳光科技有限公司;set集合的大小:0 其实我早就想到是这个结果了,因为Pid没有关联上当然取不出来值了!但是想问一问上边的实体映射能不能自己映射呢! 看人家hibernate3.3视频做的一模一样,人家的能通过!!想知道结果
hibernate映射可以忽略名称吗
hibernate有没有办法忽略实体的属性名,按顺序或者其他的,与数据库字段进行映射。
加载Hibernate实体BigDecimal属性,不等于预定的BigDecimal对象
我将Hibernate 实战源代码后端数据库从hsql改成mysql,运行testng测试,auction.test.basic.MapAndXMLRepresentation类 workWithMaps方法有如下加载过程: [code="java"]Map loadedItem =(Map) session.load("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 测试时断言失败,我将它的映射文件,类、集合、关联映射均设置lazy="false",仍然断言失败。甚至改成: [code="java"]Map loadedItem =(Map) session.get("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 也断言失败,后来改成: [code="java"]Map loadedItem =(Map) session.get("ItemEntity",(Serializable)((Map)storedData.get("item1")).get("id") ); BigDecimal bd = (BigDecimal)loadedItem.get("initialPrice"); assert bd.intValue() == 99; [/code] 测试断言通过,将映射中的lazy="false"也通过。不明白为何 [code="java"]assert (loadedItem.get("initialPrice")).equals(new BigDecimal(99));[/code] 不能通过,有谁能解释一下?
Hibernate中通过关联映射取得结果集对结果进行排序、分页的方法
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p> </p> <p><span style="font-family: courier new,courier; font-size: 12px;"> 在Hibernate中通过关联映射, 例如OneToMany等取得一个实体的属性结果集时有没有办法对结果进行排序或者分页. 直接通过HQL或者SQL可以直接利用HQL\SQL进行排序分页等操作, 但是如果这类关联映射不支持这些操作那么关联映射的作用感觉也不是很大了. 例如一个User实体有一个Set&lt;Logs&gt;属性, 即一个用户有N多操作日志,OneToMany的, 那么如果通过User.getLogs()取得的结果集将是全部查询···</span></p> </div>
关于hibernate建表的疑惑
[size=medium]据说实际过程中都是先建表再建类,那如果实体类之间存在一对多等单向或双向的关联,难道这时是自己直接在数据库表中定义外键?(这种关系在数据库中不是很清晰啊)然后再反向工程生成的类中的属性逻辑还对吗? 实际中如果是先建表,然后反向工程生成实体类?一般应该不能一步到位啊,如果我想要在一个实体类中有Set<T>用于一对多,反向工程之后能得到这种属性吗? 以前就算是简单的POJO都要修改映射文件,如果映射文件改了,对应的数据库也会因此发生改变吗? 有实际开发经验的谈谈,谢了。[/size]
hibernate映射数据库timestamp为java.util.Date类型 丢失时间
<div class="iteye-blog-content-contain" style="font-size: 14px;"> <p>数据库为mysql<br>hibernate3.0</p> <p>连接驱动为3.1.13</p> <p> </p> <p>数据库中的时间字段类型为timestamp,</p> <p>实体类中属性类型为Date</p> <p>映射如下</p> <p>&lt;property name="reserveDate" type="timestamp"&gt;</p> <p>            &lt;column name="reserveDate"  /&gt;</p> <p>        &lt;/property&gt;</p> <p>或者</p> <p>&lt;property name="reserveDate" type="java.util.Date"&gt;</p> <p>            &lt;column name="reserveDate"  /&gt;</p> <p>        &lt;/property&gt;</p> <p>在保存的时候都只保存了年月日,没有时分秒;求指教!</p> </div>
NHibernate 保存实体类时无法转换类型
求NHibernate会的请教! 实体类:Userinfo 和 Userinfo.hbm.xml是用codesmith生成的。userinfo属性如下: protected Guid _id; protected string _userName; protected string _password; protected string _email; protected int _state = 0 ; protected string _passwordQuestion; protected string _passwordAnswer; protected string _nick; protected string _realName; protected string _images; protected string _backgroundImage; protected bool _sex; protected string _mobilePhone; protected string _address; protected DateTime _birthday; protected string _loastLoginIP; protected DateTime _regTime; protected int _isDel; protected DateTime _beginTime = DateTime.Now ; protected DateTime _updateTime; protected UserRole _userRole; protected IList _newsCommentsReplies; protected IList _publishNewses; protected IList _newsCommentses; protected IList _userFavorClasses; 我写个userdao 保存实体类 userinfo,代码如下: ICriteria criteria = _session.CreateCriteria(typeof(UserRole)); userInfo.UserRole = (UserRole)criteria.List<UserRole>()[0]; _session.Save(userInfo); _session.Flush(); Save的时候抛出异常: 无法将类型为“System.Collections.ArrayList”的对象强制转换为类型“Syste m.Collections.Generic.IEnumerable`1[System.Object]” 估计是上面实体类的属性与保存时映射的类型不搭配。但都是工具生成的,不知道要怎么改。求解!!
一个简单的hibernate主外建问题
小弟刚开始学用hibernate,今天独立能CRUD以个实体 问题: 1.产品表goods 2.订单项表orderItem 一个订单项表中有一个产品吧,所以在orderItem表中存一个goods表中的主键就可以了吧 所以在实体orderItem 中加入private Goods goods;属性 可是不知道怎么在OrderItem.hbm.xml中做映射?
hibernate的关联可以代替数据库外键进行约束?
本来还挺明白,我百度了一下“hibernate没有外键的2张表如何进行关联”很多回答不需要外键也能进行关联,越看越玄乎,最后甚至看到了“不需要数据库的外键约束,hibernate配置好关联就行"的定论,我整个人都炸了,hibernate有这么强大?怎么不上天呢?2个问题,请各位回答下: 1.没有外键的2张表真的能建立一对多,多对一等等这些关联?且不说能不能关联,就算能关联,没有下面数据库外键支持的关联有个卵用?我怎么知道这张表的某条数据与另一张表中某些纪录有关?凭什么?更不用说通过一个持久化的实例查出其域中相关联的另一个类实例的属性了(a.b.getxxx()),而且我写了个测试,没有外键与域中关联类的实例做映射,在生成的sql中直接把相关联类实例的名字当作字段进行数据操作,肯定报错啊!也就是说根本不能在域中将关联类的实例作为成员,所以 没有外键的2张表真的能建立关联,还是我认识有局限方法不对? 2.如果我的想法是对的,也就是说没有外键不能建立2个实体类之间多对一等这些关联,那么所谓“hibernate配置关联取代外键约束“是怎么一回事,无论是实际操作还是企业环境中,都觉得外键有必要但是成本太高,数据库的变动拓展起来太麻烦,所以我在想 他们的”hibernate配置取代数据库外键约束"肯定是跟关联设置无关的,这个只影响查询吧,所以他们是再说"我不用外键,我也不用关联,所有的有关系的表,在数据操作时,让开发人员去记,用程序员的sql去维护表之间的约束"这种看起来可行,但出错率高看起来很蠢的方法吧? 内容很多很绕口,感谢看完的你们,希望懂得人能回答一下,我是真的被百度的神人们给弄晕了,感激不尽!
Hibernate的关联映射问题
正在做多对一两张表关联,User和Userdetail两张表,User是“一”,Userdetail是“多”。 User的主键是uid,Userdetail主键是iduserdetail,外键是user_uid。每次我一启动tomcat就出现错误,说我的userdetailDAO不可写,或有无效的setter函数,困扰我多日。 :( 下面贴错误提示: [quote] org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userdetailBiz' defined in class path resource [applicationContext.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'userdetailDAO' of bean class [com.tyyf.Biz.Impl.UserdetailBizImpl]: Bean property 'userdetailDAO' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1279) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409) at java.security.AccessController.doPrivileged(Native Method) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4887) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5381) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1114) at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1672) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722) Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'userdetailDAO' of bean class [com.tyyf.Biz.Impl.UserdetailBizImpl]: Bean property 'userdetailDAO' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter? at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:801) at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:651) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:78) at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:59) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1276) ... 30 more [/quote] 以下是我的User.java代码: [code="java"] public class User implements java.io.Serializable { // Fields private Integer uid; private String email; private Integer emailcheck; private String telephone; private Integer telecheck; private String accountcheck; private String nickname; private String password; private String name; private String sex; private String height; private String regdate; private String lastlogindate; private String beforelastdate; private Integer locked; private Integer level; private String userip; private Integer login; // Constructors /** default constructor */ public User() { } /** minimal constructor */ public User(Integer emailcheck, Integer telecheck, String accountcheck, String nickname, String password, String name, String sex, String height, String regdate, Integer locked, Integer level, Integer login) { this.emailcheck = emailcheck; this.telecheck = telecheck; this.accountcheck = accountcheck; this.nickname = nickname; this.password = password; this.name = name; this.sex = sex; this.height = height; this.regdate = regdate; this.locked = locked; this.level = level; this.login = login; } /** full constructor */ public User(String email, Integer emailcheck, String telephone, Integer telecheck, String accountcheck, String nickname, String password, String name, String sex, String height, String regdate, String lastlogindate, String beforelastdate, Integer locked, Integer level, String userip, Integer login) { this.email = email; this.emailcheck = emailcheck; this.telephone = telephone; this.telecheck = telecheck; this.accountcheck = accountcheck; this.nickname = nickname; this.password = password; this.name = name; this.sex = sex; this.height = height; this.regdate = regdate; this.lastlogindate = lastlogindate; this.beforelastdate = beforelastdate; this.locked = locked; this.level = level; this.userip = userip; this.login = login; } // Property accessors public Integer getUid() { return this.uid; } public void setUid(Integer uid) { this.uid = uid; } public String getEmail() { return this.email; } public void setEmail(String email) { this.email = email; } public Integer getEmailcheck() { return this.emailcheck; } public void setEmailcheck(Integer emailcheck) { this.emailcheck = emailcheck; } public String getTelephone() { return this.telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public Integer getTelecheck() { return this.telecheck; } public void setTelecheck(Integer telecheck) { this.telecheck = telecheck; } public String getAccountcheck() { return accountcheck; } public void setAccountcheck(String accountcheck) { this.accountcheck = accountcheck; } public String getNickname() { return this.nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getPassword() { return this.password; } public void setPassword(String password) { this.password = password; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public String getHeight() { return this.height; } public void setHeight(String height) { this.height = height; } public String getRegdate() { return this.regdate; } public void setRegdate(String regdate) { this.regdate = regdate; } public String getLastlogindate() { return this.lastlogindate; } public void setLastlogindate(String lastdate) { this.lastlogindate = lastdate; } public String getBeforelastdate() { return beforelastdate; } public void setBeforelastdate(String beforelastdate) { this.beforelastdate = beforelastdate; } public Integer getLocked() { return this.locked; } public void setLocked(Integer locked) { this.locked = locked; } public Integer getLevel() { return this.level; } public void setLevel(Integer level) { this.level = level; } public String getUserip() { return this.userip; } public void setUserip(String userip) { this.userip = userip; } public Integer getLogin() { return this.login; } public void setLogin(Integer login) { this.login = login; } } [/code] Userdetail代码: [code="java"] public class Userdetail implements java.io.Serializable { // Fields private Integer iduserdetail; private String education; private String birthday; private String workplace; private String income; private String maritalstatus; private String childs; private String housesituation; private String identitycard; private Integer identitycheck; private String photo; private String description; private Integer user_uid; // 使用User类声明user属性,并添加getter和setter方法,以体现实体类User和Userdetail的关联关系 private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } // Constructors /** default constructor */ public Userdetail() { } /** minimal constructor */ public Userdetail(Integer iduserdetail, Integer identitycheck, Integer user_uid) { this.iduserdetail = iduserdetail; this.identitycheck = identitycheck; } /** full constructor */ public Userdetail(Integer iduserdetail, String education, String birthday, String workplace, String income, String maritalstatus, String childs, String housesituation, String identitycard, Integer identitycheck, String photo, String description, Integer user_uid) { this.iduserdetail = iduserdetail; this.education = education; this.birthday = birthday; this.workplace = workplace; this.income = income; this.maritalstatus = maritalstatus; this.childs = childs; this.housesituation = housesituation; this.identitycard = identitycard; this.identitycheck = identitycheck; this.photo = photo; this.description = description; } // Property accessors public Integer getIduserdetail() { return this.iduserdetail; } public void setIduserdetail(Integer iduserdetail) { this.iduserdetail = iduserdetail; } public String getEducation() { return this.education; } public void setEducation(String education) { this.education = education; } public String getBirthday() { return this.birthday; } public void setBirthday(String birthday) { this.birthday = birthday; } public String getWorkplace() { return this.workplace; } public void setWorkplace(String workplace) { this.workplace = workplace; } public String getIncome() { return this.income; } public void setIncome(String income) { this.income = income; } public String getMaritalstatus() { return this.maritalstatus; } public void setMaritalstatus(String maritalstatus) { this.maritalstatus = maritalstatus; } public String getChilds() { return this.childs; } public void setChilds(String childs) { this.childs = childs; } public String getHousesituation() { return this.housesituation; } public void setHousesituation(String housesituation) { this.housesituation = housesituation; } public String getIdentitycard() { return this.identitycard; } public void setIdentitycard(String identitycard) { this.identitycard = identitycard; } public Integer getIdentitycheck() { return this.identitycheck; } public void setIdentitycheck(Integer identitycheck) { this.identitycheck = identitycheck; } public String getPhoto() { return this.photo; } public void setPhoto(String photo) { this.photo = photo; } public String getDescription() { return this.description; } public void setDescription(String description) { this.description = description; } public Integer getUser_uid() { return user_uid; } public void setUser_uid(Integer userUid) { user_uid = userUid; } } [/code] spring相关的代码: [quote] <!-- 配置创建UserDAOImpl的实例 --> <bean id="userDAO" class="com.tyyf.DAO.impl.UserDAOImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 配置创建UserdetailDAOImpl的实例 --> <bean id="userdetailDAO" class="com.tyyf.DAO.impl.UserdetailDAOImpl"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> …… <bean id="userBiz" class="com.tyyf.Biz.Impl.UserBizImpl"> <!-- 依赖注入数据访问层组建 --> <property name="userDAO" ref="userDAO" /> <property name="getDate" ref="getDate" /> </bean> <bean id="userdetailBiz" class="com.tyyf.Biz.Impl.UserdetailBizImpl"> <property name="userdetailDAO" ref="userdetailDAO" /> </bean> [/quote] user.hbm.xml代码 [code="java"] <hibernate-mapping> <class name="com.tyyf.hibernate3.User" table="user" catalog="mydb"> <id name="uid" type="java.lang.Integer"> <column name="uid" /> <generator class="native"></generator> </id> <property name="email" type="java.lang.String"> <column name="email" length="50"/> </property> <property name="emailcheck" type="java.lang.Integer"> <column name="emailcheck" not-null="true" /> </property> <property name="telephone" type="java.lang.String"> <column name="telephone" length="50"/> </property> <property name="telecheck" type="java.lang.Integer"> <column name="telecheck" not-null="true" /> </property> <property name="accountcheck" type="java.lang.String"> <column name="accountcheck" not-null="true" /> </property> <property name="nickname" type="java.lang.String"> <column name="nickname" length="20" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="password" length="16" not-null="true" /> </property> <property name="name" type="java.lang.String"> <column name="name" length="20" not-null="true" /> </property> <property name="sex" type="java.lang.String"> <column name="sex" length="2" not-null="true" /> </property> <property name="height" type="java.lang.String"> <column name="height" length="5" not-null="true" /> </property> <property name="regdate" type="java.lang.String"> <column name="regdate" length="45" not-null="true" /> </property> <property name="lastlogindate" type="java.lang.String"> <column name="lastlogindate" length="45" /> </property> <property name="beforelastdate" type="java.lang.String"> <column name="beforelastdate" length="45" /> </property> <property name="locked" type="java.lang.Integer"> <column name="locked" not-null="true" /> </property> <property name="level" type="java.lang.Integer"> <column name="level" not-null="true" /> </property> <property name="userip" type="java.lang.String"> <column name="userip" /> </property> <property name="login" type="java.lang.Integer"> <column name="login" not-null="true" /> </property> </class> </hibernate-mapping> [/code] Userdetail.hbm.xml代码 [code="java"] <hibernate-mapping> <class name="com.tyyf.hibernate3.Userdetail" table="userdetail" catalog="mydb"> <id name="iduserdetail" type="java.lang.Integer"> <column name="iduserdetail" /> <generator class="native"></generator> </id> <property name="education" type="java.lang.String"> <column name="education" length="10" /> </property> <property name="birthday" type="java.lang.String"> <column name="birthday" length="20" /> </property> <property name="workplace" type="java.lang.String"> <column name="workplace" length="10" /> </property> <property name="income" type="java.lang.String"> <column name="income" length="20" /> </property> <property name="maritalstatus" type="java.lang.String"> <column name="maritalstatus" length="4" /> </property> <property name="childs" type="java.lang.String"> <column name="childs" length="15" /> </property> <property name="housesituation" type="java.lang.String"> <column name="housesituation" length="12" /> </property> <property name="identitycard" type="java.lang.String"> <column name="identitycard" length="18" /> </property> <property name="identitycheck" type="java.lang.Integer"> <column name="identitycheck" not-null="true" /> </property> <property name="photo" type="java.lang.String"> <column name="photo" length="45" /> </property> <property name="description" type="java.lang.String"> <column name="description" length="2000" /> </property> <many-to-one name="user" column="user_uid" class="com.tyyf.hibernate3.User" /> </class> </hibernate-mapping> [/code] 为了方便,我把userdetailDAOImpl也贴上来: [code="java"] public class UserdetailBizImpl implements UserdetailBiz { UserdetailDAO userdetailDAO; public void setUserdetail(UserdetailDAO userdetailDAO) { this.userdetailDAO = userdetailDAO; } @Override public void deleteUser(Userdetail userdetail) { // TODO Auto-generated method stub userdetailDAO.deleteUserdetail(userdetail); } @Override public Userdetail getUser(Userdetail userdetails) { // TODO Auto-generated method stub Userdetail userdetail = null; List list = userdetailDAO.searchUserdetail(userdetails); Iterator iter = list.iterator(); if (iter.hasNext()) { userdetail = (Userdetail) iter.next(); } return userdetail; } @Override public void register(Userdetail userdetail) { // TODO Auto-generated method stub userdetailDAO.register(userdetail); } @Override public void updateUsers(Userdetail userdetail) { // TODO Auto-generated method stub userdetailDAO.updateUserdetail(userdetail); } } [/code]
hibernate原生sql查询将结果转换为vo
两张表关联查询,是一对多的关系,现在使用原生的sql将数据查出放到一个vo里面,vo里面除了自身的一些属性还有一个集合来存储多的一方的数据(ps:这个无法映射到实体类,所以什么使用onetomany这种形式的配置或注解的方式行不通),最好能写个demo
SSH整合,hibernate注解配置,无hbm.xml,映射出现问题
java实体类代码: ``` package cn.com.car.base.entity; import java.io.Serializable; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.GenericGenerator; @Entity @Table(name="T_CAR") public class Car implements Serializable{ private static final long serialVersionUID = 1L; @GenericGenerator(name = "generator", strategy = "guid") @Id @GeneratedValue(generator = "generator") @Column(name = "id", unique = true, nullable = false, length = 38) private String id; @Column(name="models") private String models;//具体车型 @Column(name="type") private String type;//所属类别 @Column(name="price") private int price;//价格 public String getId() { return id; } public void setId(String id) { this.id = id; } public String getModels() { return models; } public void setModels(String models) { this.models = models; } public String getType() { return type; } public void setType(String type) { this.type = type; } public int getPrice() { return price; } public void setPrice(int price) { this.price = price; } @Override public String toString() { return "Car [id=" + id + ", models=" + models + ", type=" + type + ", price=" + price + "]"; } } ``` ------------------------------------------ application.xml配置 ``` <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd" default-autowire="byName" default-lazy-init="true"> <!-- 属性文件读入 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath*:hibernate.properties</value> </list> </property> </bean> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${hibernate.connection.driverClassName}"/> <property name="url" value="${hibernate.connection.url}"/> <property name="username" value="${hibernate.connection.username}"/> <property name="password" value="${hibernate.connection.password}"/> </bean> <!--Hibernate SessionFatory--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="annotatedClasses"> <list> <value>cn.com.car.base.entity.Car</value> </list> </property> <property name="hibernateProperties"> <value>classpath:hibernate.properties</value> </property> </bean> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> </beans> ``` ---------------------------------------- hibernate.properties配置文件 ``` hibernate.show_sql=true hibernate.format_sql=false hibernate.cache=org.hibernate.cache.EhCacheProvider hibernate.dialect=org.hibernate.dialect.MySQL5Dialect hibernate.connection.driverClassName=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/car hibernate.connection.username=car hibernate.connection.password=123456 hibernate.c3p0.minPoolSize=5 hibernate.c3p0.maxPoolSize=50 hibernate.c3p0.timeout=1800 hibernate.c3p0.max_statement=200 ``` ---------------------------------- DAO层 ``` package cn.com.car.base.dao.impl; import java.util.HashMap; import java.util.List; import org.hibernate.Query; import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import cn.com.car.base.dao.CarDao; import cn.com.car.base.entity.Car; public class CarDaoImpl extends HibernateDaoSupport implements CarDao { @Override public List<Car> getAllCar() { String sql="from T_CAR where 1=1"; List<Car> list=this.getHibernateTemplate().find(sql); return list; } @Override public List<Car> getCarByParam(HashMap<String, String> param) { StringBuilder sql=new StringBuilder(); sql.append("select * from T_CAR where 1=1"); if(param!=null){ if(param.get("type")!=null){ String type=param.get("type"); sql.append("and type="+type); } if(param.get("price")!=null){ String price=param.get("price"); sql.append("and price="+price); } Query query = this.getSession().createSQLQuery(sql.toString()); List<Car> list=query.list(); return list; } List<Car> list=this.getHibernateTemplate().find(sql.toString()); return list; } @Override public Car getCarByModels(String models) { String hql = "from T_CAR t where 1=1 " +" and t.models=? "; Query query = this.getSession().createQuery(hql).setString(0, models); return (Car) query.list().get(0); } @Override public Car getCarById(String id) { String hql = "from T_CAR t where 1=1 " +" and t.id=? "; Query query = this.getSession().createQuery(hql).setString(0, id); return (Car) query.list().get(0); } } ``` 我是模仿别的项目搭建的,没有.hbm.xml,现在运行DAO层就出现 “org.hibernate.hql.ast.QuerySyntaxException: T_CAR is not mapped [from T_CAR where 1=1]”这样的错误。
spring整合hibernate中的web.xml问题
下面是网上看的别人spring整合hibernate的web。xml文件 可我搞不懂最后那个几个是什么意思:配置spring声明式事务,配置事务事务属性,配置事务切点,并把切点和事务属性关联起来。 求大神讲解讲解! <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/sch ema/tx/spring-tx-4.1.xsd"> <context:component-scan base-package="com.demo.ssm"></context:component-scan> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/test" /> <property name="username" value="root"></property> <property name="password" value="281889"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" lazy-init="false"> <!-- 注入datasource,给sessionfactoryBean内setdatasource提供数据源 --> <property name="dataSource" ref="dataSource" /> <property name="configLocation" value="classpath:hibernate.cfg.xml"></property> <!-- //加载实体类的映射文件位置及名称 --> <property name="mappingLocations" value="classpath:com/demo/ssm/po/*.hbm.xml"></property> </bean> <!-- 配置Spring声明式事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!-- 配置事务事务属性 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="get*" read-only="true"/> <tx:method name="*"/> </tx:attributes> </tx:advice> <!-- 配置事务切点,并把切点和事务属性关联起来 --> <aop:config> <aop:pointcut expression="execution(* com.demo.ssm.daoImpl.*.*(..))" id="txPointcut"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/> </aop:config> </beans>
Hibernate 级联刷新、删除问题
Hibernate 版本hibernate-core-4.0.0.Final <br /> <br />Users和Orders两个实体 <br /> <br />一个Users对应多个Orders&nbsp; 一对多 <br />多个Orders对应一个Users&nbsp; 多对一 <br /> <br /> <br />在Users实体中配置以下 <br /><pre name="code" class="java">@OneToMany(mappedBy="users",cascade={CascadeType.ALL}) private List&lt;Orders&gt; orders; public List&lt;Orders&gt; getOrders() { return orders; } public void setOrders(List&lt;Orders&gt; orders) { this.orders = orders; }</pre> <br /> <br />级联删除的时除 <br /><pre name="code" class="java">Users u = (Users)session.get(Users.class, 52); List&lt;Orders&gt; l = u.getOrders(); Orders o = null; for(Iterator&lt;Orders&gt; it = l.iterator();it.hasNext();) { o = it.next(); if(o.getOrderId()==57) { //需要先从List中删除,再从session中删除 it.remove(); session.delete(o); } }</pre> <br />为什么从list集合中删除,还需要再手动从session中删除,CascadeType已设置为ALL了啊 <br /> <br />级联刷新 <br /><pre name="code" class="java">//测试refresh,user中的list Session s1 = HibernateUtils.getSession(); Users u = (Users)s1.get(Users.class, 52); List list = u.getOrders(); //断点执行到此处,我修改数据库中Orders中的name值为100后refresh s1.refresh(u); List list2 = u.getOrders(); //断点执行到此处,查看list2集合Orders的name值为旧值1,并不是数据库中最新的100 s1.close();</pre> <br />为什么此处的级联刷新对list不起作用,只对Users非关系映射的属性起作用CascadeType已设置为ALL了啊 <br /> <br />
Hibernate使用二级缓存的问题.请大家帮忙看下。
我在做Hibernate中做测试的时候 ,使用的是Hibernate3.32版本, 在Hibernate.cfg.xml文件中配置了二级缓存. 但是在不同的条件下查询的时候,会从数据库里面查询,不会从二级缓存中取出数据, 我看了一下我的打印出的log信息。有两条sql语句。 下面是我的Hibernate.cfg.xml配置文件: [code="java"] <session-factory> <property name="connection.username">root</property> <property name="connection.password">mysql</property> <property name="connection.url">jdbc:mysql://localhost/mysqldemo</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <!--自动在数据库中生成表 <property name="hibernate.hbm2ddl.auto">create</property> --> <!-- 开启二级缓存 --> <property name="hibernate.cache.use_second_level_cache">true</property> <!-- 设置缓存提供者 --> <property name="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</property> <!-- 查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property> <!-- 映射文件 --> <mapping resource="pack/java/hibernate/mapping/User.hbm.xml"/> <!-- 指定哪些实体需要使用二级缓存,usage属性指定缓存的策略 --> <class-cache usage="read-only" class="pack.java.hibernate.pojo.User"/> </session-factory> [/code] 这里是配置缓存的echcache.xml文件: [code="java"] <echcache> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementslnMemory="10000" eternal="false" overflowToDisk="true" timeToldleSeconds="120" timeToLiveSecods="120" diskPersistent="false" /> </echcache> [/code] 下面是Java测试代码: [code="java"] public void queryUser() { // TODO Auto-generated method stub if(session==null){ session = getSession(); } query = session.createQuery("from "+User.class.getName()+" u where u.uname in('100','101','102','103','104','105')"); query.setCacheable(true); query.setFirstResult((0)*1000).setMaxResults(1000); List<User> list = query.list(); for(User user:list){ System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"+user.getUid()+","+user.getUname()+","+user.getSex()+","+user.getAddress()); } session.close(); if(!session.isOpen()){ session = getSession(); } query = session.createQuery("from "+User.class.getName()+" u where u.uname ='101'"); query.setCacheable(true); query.setFirstResult((0)*1000).setMaxResults(1000); List<User> list2 = query.list(); for(User user:list2){ System.out.println("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"+user.getUid()+","+user.getUname()+","+user.getSex()+","+user.getAddress()); } session.close(); } [/code] 下面是Hibernate生成的sql语句: 2011-10-17 23:37:32 org.hibernate.jdbc.AbstractBatcher.log(AbstractBatcher.java:401) select user0_.UID as UID0_, user0_.UNAME as UNAME0_, user0_.AGE as AGE0_, user0_.ADDRESS as ADDRESS0_, user0_.SEX as SEX0_, user0_.REMARK as REMARK0_ from User user0_ where user0_.UNAME in ( '100' , '101' , '102' , '103' , '104' , '105' ) limit ? 2011-10-17 23:37:35 org.hibernate.jdbc.AbstractBatcher.log(AbstractBatcher.java:401) select user0_.UID as UID0_, user0_.UNAME as UNAME0_, user0_.AGE as AGE0_, user0_.ADDRESS as ADDRESS0_, user0_.SEX as SEX0_, user0_.REMARK as REMARK0_ from User user0_ where user0_.UNAME='101' limit ? 请高手看看是什么原因..
想参考springside实现Hibernate的零配置,但提示错误:org.hibernate.hql.ast.QuerySyntaxException
想参考Springside实现Hibernate的零配置文件,写了一个简单的测试用例,查询一张表(数据库表名为TB_USER,对应的实体类名为User),但是出错如下: org.hibernate.hql.ast.QuerySyntaxException: User is not mapped [from User] 错误提示是说我的“from User”语句中“User”未建立映射。在网上查过,类似的问题一般是因为类名的大小写错误或者配置文件错误,导致类名和数据库表名没有建立映射关系,但我似乎没有这类问题。好几天了找不到原因,不知道哪里的配置有毛病,以下是相关代码 测试用例如下: [code="java"] import org.springframework.beans.factory.annotation.Autowired; import org.springside.modules.test.junit38.SpringTransactionalTestCase; import accountant.entity.User; public class DaoTest extends SpringTransactionalTestCase { @Autowired org.springside.modules.orm.hibernate.HibernateDao<User, Long> dao ; //列出所有User表记录 public void testUserList() { //试过把完整包名带上,写成“from accountant.entity.User”,还是一样的错误 dao.find("from User", null); } } [/code] User类代码如下,其中@Table(name="TB_USER")指明对应的数据库表是“TB_USER”,这张表在库中确定存在,并有两条记录 [code="java"] package accountant.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.Cache; import org.hibernate.annotations.CacheConcurrencyStrategy; @Entity @Table(name="TB_USER") public class User { String name; String id; String sex; String address; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } } [/code] applicationContext.xml中的数据库相关配置如下,其中 “<property name="packagesToScan" value="accountant.entity.*" />”是指定自动扫描实体类的包,User类也就在“accountant.entity”这个包下 [code="java"] <!-- 数据源配置,使用应用内的DBCP数据库连接池。--> <!--这里数据库的连接应该是没问题的,因为出错时提示的是Hql执行错误,说明数据库连接已经成功建立了,不过是执行的语句有问题 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- Connection Pooling DBCP --> <property name="initialSize" value="5" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="30" /> <property name="maxWait" value="1000" /> <property name="poolPreparedStatements" value="true" /> <property name="defaultAutoCommit" value="false" /> </bean> <!-- Hibernate配置--> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="namingStrategy"> <bean class="org.hibernate.cfg.ImprovedNamingStrategy" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider </prop> </props> </property> <property name="packagesToScan" value="accountant.entity.*" /> </bean> <!-- Dao类 --> <bean id="hibernateDao" class="org.springside.modules.orm.hibernate.HibernateDao"> <property name="sessionFactory"> <ref bean="sessionFactory"/> </property> </bean> [/code] 相关的代码就是以上三处,不知道哪里有遗漏或是错误,请指点一二,非常感谢! [b]问题补充:[/b] [code="java"][/code] 先谢谢二位,我的spring和hibernate的jar版本如下: [img]/upload/attachment/124016/5a67b24b-27e0-348a-ab6f-5d7003972509.gif[/img] [img]/upload/attachment/124018/751e247e-4c6c-341f-9859-4a52863af90d.gif[/img] 这个小例子是在springside的mini-web范例上直接改的,应该环境方面不会有大问题吧 to layer555: springside的mini-web的applicationContext.xml是这样的: [code="java"] <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jee="http://www.springframework.org/schema/jee" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-lazy-init="true"> <description>Spring公共配置文件 </description> <!-- 定义受环境影响易变的变量 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> <property name="ignoreResourceNotFound" value="true" /> <property name="locations"> <list> <!-- 标准配置 --> <value>classpath*:/application.properties</value> <!-- 本地开发环境配置 --> <value>classpath*:/application.local.properties</value> <!-- 服务器生产环境配置 --> <!-- <value>file:/var/myapp/application.server.properties</value> --> </list> </property> </bean> <!-- 使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入 --> <context:component-scan base-package="org.springside.examples.miniweb" /> <!-- 数据源配置,使用应用内的DBCP数据库连接池 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!-- Connection Info --> <property name="driverClassName" value="org.apache.derby.jdbc.ClientDriver" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> <!-- Connection Pooling DBCP --> <property name="initialSize" value="5" /> <property name="maxActive" value="100" /> <property name="maxIdle" value="30" /> <property name="maxWait" value="1000" /> <property name="poolPreparedStatements" value="true" /> <property name="defaultAutoCommit" value="false" /> </bean> <!-- 数据源配置,使用应用服务器的数据库连接池 --> <!--<jee:jndi-lookup id="dataSource" jndi-name="java:comp/env/jdbc/ExampleDB" />--> <!-- Hibernate配置 --> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="namingStrategy"> <bean class="org.hibernate.cfg.ImprovedNamingStrategy" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.DerbyDialect</prop> <prop key="hibernate.show_sql">${hibernate.show_sql}</prop> <prop key="hibernate.format_sql">${hibernate.format_sql}</prop> <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider </prop> <prop key="hibernate.cache.provider_configuration_file_resource_path">${hibernate.ehcache_config_file}</prop> </props> </property> <property name="packagesToScan" value="org.springside.examples.miniweb.entity.*" /> </bean> <!-- 事务管理器配置,单数据源事务 --> <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <!-- 事务管理器配置,多数据源JTA事务--> <!-- <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager or WebLogicJtaTransactionManager" /> --> <!-- 使用annotation定义事务 --> <tx:annotation-driven transaction-manager="transactionManager" /> </beans> [/code] 这里面也没有configurationClass,也能正常,不知道在什么地方设置或默认了 to xuzhfa123: 改了你说的两处,确实可以跑通了,非常感谢。但搞不明白的是,在上面贴的mini-web的配置文件中是这么写的: [code="java"]<property name="packagesToScan" value="org.springside.examples.miniweb.entity.*" /> [/code] 这个例子是可以正常运行的,为什么我就必须改成 [code="java"] <property name="packagesToScan" value="accountant.entity" /> [/code] 才可以呢?
Hibername多表关系映射出现问题,请教大家
问题: 权限表中的role_id保存结果为null, 下面是详细描述: 涉及三个实体类: ``` /** * 权限表 * @author Imxood * 2016年2月21日 */ @Entity @Table(name = "t_permission") public class Permission implements Serializable { private static final long serialVersionUID = 2718494404287816693L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String name; @ManyToOne @JoinColumn(name = "role_id") private Role role; public Permission() { } //getter,setter... } /** * 角色表 * @author Imxood * 2016年2月21日 */ @Entity @Table(name = "t_role") public class Role implements Serializable { private static final long serialVersionUID = 7042556500854817893L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String name; @ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @JoinTable(name = "t_user_role", joinColumns = { @JoinColumn(name = "role_id") }, inverseJoinColumns = { @JoinColumn(name = "user_id") }) private List<User> user; @OneToMany(mappedBy = "role", // 指定了由多的那一方来维护关联关系,mappedBy指的是多的一方对1的这一方的依赖的属性,如果没有指定由谁来维护关联关系,则系统会给我们创建一张中间表 fetch = FetchType.EAGER, cascade = CascadeType.ALL) private List<Permission> permissions; public Role() { } //getter,setter... } /** * 用户表 * @author Imxood * 2016年2月21日 */ @Entity @Table(name = "t_user") public class User implements Serializable { private static final long serialVersionUID = -7154917770769302643L; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long id; private String username; private String password; @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)// mappedBy指定了由多的那一方来维护关联关系即外键建在多方,如果没有指定由谁来维护关联关系,则系统会给我们创建一张中间表 @JoinTable(name = "t_user_role", joinColumns = { @JoinColumn(name = "user_id") }, inverseJoinColumns = { @JoinColumn(name = "role_id") }) private List<Role> roles; public User() { } //getter,setter... } ``` 我的操作是这样的: ``` //数据初始化, 添加两条用户 //用户1: List<Permission> permissions = new ArrayList<> (); permissions.add(new Permission("user:*")); Role role = new Role("admin", permissions); List<Role> roles = new ArrayList<> (); roles.add(role); User user = new User("imx", "imx", roles); user = userServer.save(user); //用户2: permissions = new ArrayList<> (); permissions.add(new Permission("student:*")); role = new Role("admin", permissions); roles = new ArrayList<> (); roles.add(role); user = new User("imxood", "imxood", roles); user = userServer.save(user); ``` 运行的结果是: ![图片说明](https://img-ask.csdn.net/upload/201602/21/1456019982_949032.png) 预期的效果是role_id是有值的, 红圈的地方肯定不对,请教大家看看,如何使有值?~~
spring无法装载bean的属性
各位好, 我有一spring mvc + hibernate + spring的项目。 实体: [code="java"] /** * Created by IntelliJ IDEA. * User: smart * Date: 2010-9-16 * Time: 12:35:05 */ public class DictData { private Long id; private String code; private String name; private String father; //getter setter } [/code] 前台页面使用了spring mvc的标签。 [code="html"] <spring:bind path="dictData.name"> <td height="30" align="left" bgcolor="#efefef"> <input type="text" id="dname" name="${status.expression}" value="${status.value}"/> <span id="dnameerror" style="display:none;">[[code="java"][/code]必填,长度不得小于2位!]</span></td> <td>${status.errorMessage}</td> </spring:bind> [/code] 其他一切关于实体的hibernat映射配置已经配好(反复确认配置没有问题。)当访问页面的时候报错如下: [code="java"] Bean property 'father' is not readable or has an invalid getter method: Does the return type of the getter match the parameter type of the setter? ...... [/code] 当我在jsp页面中去掉对father的应用之后,报同样的错,只不过这次的字段是name. google之后,无外乎这两个说法: 第一。jsp中字段名称java bena的属性一样。我的是一样的 第二。不是看java bean中字段的值是不是一样,要看getter和setter是否一致。这个也是一致的。 第三。由于涉及到添加 spring.tld spring-form.tld的问题,所以有可能有spring版本的问题。 问题仍然没有解决。 谢谢!!
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
小白学 Python 爬虫(25):爬取股票信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
世界上最牛的网络设备,价格低廉,其貌不扬......
夜深人静,电视和电脑都已经关机休息,但是我还在默默工作,我安静地趴在你家中的某个地方,7*24小时不眠不休,任劳任怨,目的只有一个,能让你舒服地躺在床上,畅快地刷手机!没错,这就是我,...
《面试宝典》2019年springmvc面试高频题(java)
前言 2019即将过去,伴随我们即将迎来的又是新的一年,过完春节,马上又要迎来新的金三银四面试季。那么,作为程序猿的你,是否真的有所准备的呢,亦或是安于本职工作,继续做好手头上的事情。 当然,不论选择如何,假如你真的准备在之后的金三银四跳槽的话,那么作为一个Java工程师,就不可不看了。如何在几个月的时间里,快速的为即将到来的面试进行充分的准备呢? 1、什么是Spring MVC ?简单...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
python爬取百部电影数据,我分析出了一个残酷的真相
2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。 看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
2020年1月中国编程语言排行榜,python是2019增长最快编程语言
编程语言比例 排名 编程语言 最低工资 工资中位数 最低工资 最高工资 人头 人头百分比 1 rust 20713 17500 5042 46250 480 0.14% 2 typescript 18503 22500 6000 30000 1821 0.52% 3 lua 18150 17500 5250 35000 2956 0.84% 4 go 17989 16...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
工作十年的数据分析师被炒,没有方向,你根本躲不过中年危机
2020年刚刚开始,就意味着离职潮高峰的到来,我身边就有不少人拿着年终奖离职了,而最让我感到意外的,是一位工作十年的数据分析师也离职了,不同于别人的主动辞职,他是被公司炒掉的。 很多人都说数据分析是个好饭碗,工作不累薪资高、入门简单又好学。然而今年34的他,却真正尝到了中年危机的滋味,平时也有不少人都会私信问我: 数据分析师也有中年危机吗?跟程序员一样是吃青春饭的吗?该怎么保证自己不被公司淘汰...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
立即提问