Lotus教程、Java教程、Java虚拟机、Java软件综合开发社区

Lotus、Domino、Java、C#、Web、数据库综合开发教程、资料社区

Archive for the ‘Hibernate’ Category

出现java.lang.IllegalArgumentException: id to load is required for loading的解决方法

Published by admin on 05月 1, 2012

使用了hibernate进行关系映射的时候,比如有一对多的关系,一个测试项目对应多个测试用例模块,部分的关系映射表:

代码

<many-to-one name=”testProject” class=”com.eyely.pojos.TestProject”>
<column name=”f_test_project_id” sql-type=”nvarchar2(32)” />
</many-to-one>
<set name=”testCaseModules” lazy=”true” inverse=”false”>
<key>
<column name=”f_test_project_id” sql-type=”nvarchar2(32)” />
</key>
<one-to-many class=”com.eyely.pojos.TestCaseModule”/>
</set>

相关Java文件:

Read the rest of this entry »

常用数据库的链接方法<转过来的,收藏一下>

Published by admin on 10月 29, 2011

MySQL:
String Driver=”com.mysql.jdbc.Driver”;    //驱动程序
String URL=”jdbc:mysql://localhost:3306/db_name”;    //连接的URL,db_name为数据库名
String Username=”username”;    //用户名
String Password=”password”;    //密码
Class.forName(Driver);
Connection con=DriverManager.getConnection(URL,Username,Password);

Read the rest of this entry »

关于hibernate 中如果有top查询

Published by admin on 06月 14, 2011

在ssh的hibernate中写上这个方法

  public List findTop(){
log.debug(”finding all Bulletin instances”);
try {
String queryString = “select top 10 from Bulletin order by Bulletin_Time desc”;

return getHibernateTemplate().find(queryString);
} catch (RuntimeException re) {
log.error(”find all failed”, re);
throw re;
}
}
Read the rest of this entry »

hibernate的save()疑惑

Published by admin on 05月 29, 2011

hibernate save的时候必须启用事务,也就是必须
beginTransaction();
然后
commit();
要不然不会insert

看孙卫琴.精通Hibernate:Java对象持久化技术详解上讲
调用save方法后,hibernate并不会立即insert,而是保存在缓存里,等清理缓存时再insert
什么时候清理缓存呢?
1、事务commit();
2、find方法(hibernate3被废)

Read the rest of this entry »

org.hibernate.HibernateException: Found shared references to a collection

Published by admin on 05月 29, 2011

BeanUtil.copyProperties()的方式复制一个实体bean的时候,如果这个实体bean有一个集合属性,因为这个方法只是做了一个浅拷贝,所以新拷贝的实体跟旧的实体引用了同一个集合,而这在hibernate中是不允许的,所以报错。

解决方法:

在拷贝后,新建一个集合,将原来的集合元素添加进去,并赋值给新拷贝的实体。

如果是拷贝一个实体存入数据库,而不需要集合,则可以设置obj.setSet(null);  即可

Null value was assigned to a property of primitive type setter of

Published by admin on 05月 14, 2011

Exception:
org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of com.seven.domain.Book.printTime

原因:数据库里printTime字段为NULL

Java代码  

  1. <!–Hibernate映射文件中的字段–>   
  2. <property name=“printTime” type=“long”><column name=“print_time”/></property>  

Read the rest of this entry »

SSH框架启动报错java.lang.IllegalArgumentException: ’sessionFactory’ or ‘hibernateTemplate’ is required

Published by admin on 04月 19, 2011

在做一个SSH的例子时.启动TOMCAT服务器时就老是报错.
………
java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required
根据提示在配置文件中为这个类添加一个property属性
<property >
<ref bean=”sessionFactory” />
</property>
就不会报错.但是其它的Service类并不需要这么做,让我感觉很奇怪.最终发现原来是我让CataogService  extends HibernateDaoSupport .改正后运行正常,goood
牢记….
FeedBack:#re: java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required 2007-12-26 16:41 admin

#re: java.lang.IllegalArgumentException: sessionFactory or hibernateTemplate is required 2008-01-07 09:26 sanshao

如果是DAO层的类extends HibernateDaoSupport
也需要在DAO层的类中添加
<property >
<ref bean=”sessionFactory” />
</property> 

Hibernate之deleted object would be re-saved by cascade异常org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)

Published by admin on 04月 18, 2011

在Hibernate中,删除存在关联关系的一个对象时,会出现 org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)这个异常

至于具体的持久类和配置文件就不发了,网上也有很多的解决办法。

比如:解决方案如下:
方法1 删除Set方的cascade
方法2 解决关联关系后,再删除 :

Read the rest of this entry »

查找当前oracle的默认字符集

Published by admin on 02月 15, 2011

一般在进行ORACLE迁移时,最好保证前后数据库的sid、用户名、密码一致,当然最终于的是字符集也必须一致。那在安装之前必须查看当前数据库的字符集.

查看当前oracle默认字符集的sql语句是:select * from v$nls_parameters;

Read the rest of this entry »

sql 8152错误 将截断字符串或二进制数据,SQL Error8152,SQLState:22001

Published by admin on 12月 21, 2010

在测试环境中没错,可是在生产环境中却提示SQL Error8152,SQLState:22001,将截断字符串或二进制数据的错误,通过搜索知道主要原因就是你增加的数据类型与数据库中字段所定义的不符。 通过分析获取数据以及对比数据库字段长度,验证了问题所在,把字段长度增加即可。

解决方法:
一个是修改数据库字段大小;
再一就是是加强数据强壮性,严格的输入判断。
防止添加的信息类型或者长度与数据库表中字段所对应的类型不符合。