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]
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]”这样的错误。
hibernate原生sql查询将结果转换为vo
两张表关联查询,是一对多的关系,现在使用原生的sql将数据查出放到一个vo里面,vo里面除了自身的一些属性还有一个集合来存储多的一方的数据(ps:这个无法映射到实体类,所以什么使用onetomany这种形式的配置或注解的方式行不通),最好能写个demo
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版本的问题。 问题仍然没有解决。 谢谢!!
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
面试官问我:什么是消息队列?什么场景需要他?用了会出现什么问题?
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸,打败了无数
8年经验面试官详解 Java 面试秘诀
    作者 | 胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。   Java程序员准备和投递简历的实
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
《阿里巴巴开发手册》读书笔记-编程规约
Java编程规约命名风格 命名风格 类名使用UpperCamelCase风格 方法名,参数名,成员变量,局部变量都统一使用lowerCamelcase风格 常量命名全部大写,单词间用下划线隔开, 力求语义表达完整清楚,不要嫌名字长 ...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
Python爬虫精简步骤1 获取数据
爬虫的工作分为四步: 1.获取数据。爬虫程序会根据我们提供的网址,向服务器发起请求,然后返回数据。 2.解析数据。爬虫程序会把服务器返回的数据解析成我们能读懂的格式。 3.提取数据。爬虫程序再从中提取出我们需要的数据。 4.储存数据。爬虫程序把这些有用的数据保存起来,便于你日后的使用和分析。 这一篇的内容就是:获取数据。 首先,我们将会利用一个强大的库——requests来获取数据。 在电脑上安装
Python绘图,圣诞树,花,爱心 | Turtle篇
1.画圣诞树 import turtle screen = turtle.Screen() screen.setup(800,600) circle = turtle.Turtle() circle.shape('circle') circle.color('red') circle.speed('fastest') circle.up() square = turtle.Turtle()
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
听说想当黑客的都玩过这个Monyer游戏(1~14攻略)
第零关 进入传送门开始第0关(游戏链接) 请点击链接进入第1关: 连接在左边→ ←连接在右边 看不到啊。。。。(只能看到一堆大佬做完的留名,也能看到菜鸡的我,在后面~~) 直接fn+f12吧 &lt;span&gt;连接在左边→&lt;/span&gt; &lt;a href="first.php"&gt;&lt;/a&gt; &lt;span&gt;←连接在右边&lt;/span&gt; o
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
作为一个程序员,内存和磁盘的这些事情,你不得不知道啊!!!
截止目前,我已经分享了如下几篇文章: 一个程序在计算机中是如何运行的?超级干货!!! 作为一个程序员,CPU的这些硬核知识你必须会! 作为一个程序员,内存的这些硬核知识你必须懂! 这些知识可以说是我们之前都不太重视的基础知识,可能大家在上大学的时候都学习过了,但是嘞,当时由于老师讲解的没那么有趣,又加上这些知识本身就比较枯燥,所以嘞,大家当初几乎等于没学。 再说啦,学习这些,也看不出来有什么用啊!
别低估自己的直觉,也别高估自己的智商
所有群全部吵翻天,朋友圈全部沦陷,公众号疯狂转发。这两周没怎么发原创,只发新闻,可能有人注意到了。我不是懒,是文章写了却没发,因为大家的关注力始终在这次的疫情上面,发了也没人看。当然,我...
这个世界上人真的分三六九等,你信吗?
偶然间,在知乎上看到一个问题 一时间,勾起了我深深的回忆。 以前在厂里打过两次工,做过家教,干过辅导班,做过中介。零下几度的晚上,贴过广告,满脸、满手地长冻疮。   再回首那段岁月,虽然苦,但让我学会了坚持和忍耐。让我明白了,在这个世界上,无论环境多么的恶劣,只要心存希望,星星之火,亦可燎原。   下文是原回答,希望能对你能有所启发。   如果我说,这个世界上人真的分三六九等,
为什么听过很多道理,依然过不好这一生?
记录学习笔记是一个重要的习惯,不希望学习过的东西成为过眼云烟。做总结的同时也是一次复盘思考的过程。 本文是根据阅读得到 App上《万维钢·精英日课》部分文章后所做的一点笔记和思考。学习是一个系统的过程,思维模型的建立需要相对完整的学习和思考过程。以下观点是在碎片化阅读后总结的一点心得总结。
B 站上有哪些很好的学习资源?
哇说起B站,在小九眼里就是宝藏般的存在,放年假宅在家时一天刷6、7个小时不在话下,更别提今年的跨年晚会,我简直是跪着看完的!! 最早大家聚在在B站是为了追番,再后来我在上面刷欧美新歌和漂亮小姐姐的舞蹈视频,最近两年我和周围的朋友们已经把B站当作学习教室了,而且学习成本还免费,真是个励志的好平台ヽ(.◕ฺˇд ˇ◕ฺ;)ノ 下面我们就来盘点一下B站上优质的学习资源: 综合类 Oeasy: 综合
如何优雅地打印一个Java对象?
你好呀,我是沉默王二,一个和黄家驹一样身高,和刘德华一样颜值的程序员。虽然已经写了十多年的 Java 代码,但仍然觉得自己是个菜鸟(请允许我惭愧一下)。 在一个月黑风高的夜晚,我思前想后,觉得再也不能这么蹉跎下去了。于是痛下决心,准备通过输出的方式倒逼输入,以此来修炼自己的内功,从而进阶成为一名真正意义上的大神。与此同时,希望这些文章能够帮助到更多的读者,让大家在学习的路上不再寂寞、空虚和冷。 ...
雷火神山直播超两亿,Web播放器事件监听是怎么实现的?
Web播放器解决了在手机浏览器和PC浏览器上播放音视频数据的问题,让视音频内容可以不依赖用户安装App,就能进行播放以及在社交平台进行传播。在视频业务大数据平台中,播放数据的统计分析非常重要,所以Web播放器在使用过程中,需要对其内部的数据进行收集并上报至服务端,此时,就需要对发生在其内部的一些播放行为进行事件监听。 那么Web播放器事件监听是怎么实现的呢? 01 监听事件明细表 名
3万字总结,Mysql优化之精髓
本文知识点较多,篇幅较长,请耐心学习 MySQL已经成为时下关系型数据库产品的中坚力量,备受互联网大厂的青睐,出门面试想进BAT,想拿高工资,不会点MySQL优化知识,拿offer的成功率会大大下降。 为什么要优化 系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比 如何优化 设计
Linux 命令(122)—— watch 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] watch(1) manual
Linux 命令(121)—— cal 命令
1.命令简介 2.命令格式 3.选项说明 4.常用示例 参考文献 [1] cal(1) manual
记jsp+servlet+jdbc实现的新闻管理系统
1.工具:eclipse+SQLyog 2.介绍:实现的内容就是显示新闻的基本信息,然后一个增删改查的操作。 3.数据库表设计 列名 中文名称 数据类型 长度 非空 newsId 文章ID int 11 √ newsTitle 文章标题 varchar 20 √ newsContent 文章内容 text newsStatus 是否审核 varchar 10 news...
Python新型冠状病毒疫情数据自动爬取+统计+发送报告+数据屏幕(三)发送篇
今天介绍的项目是使用 Itchat 发送统计报告 项目功能设计: 定时爬取疫情数据存入Mysql 进行数据分析制作疫情报告 使用itchat给亲人朋友发送分析报告(本文) 基于Django做数据屏幕 使用Tableau做数据分析 来看看最终效果 目前已经完成,预计2月12日前更新 使用 itchat 发送数据统计报告 itchat 是一个基于 web微信的一个框架,但微信官方并不允
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问