2012年12月20日星期四

Hibernate中findById时出现org.hibernate.MappingException: Unknown entity:的解决办法

 

原因:在使用myeclispe生成pojo和DAO代码后,对相关类进行了重构,改变了包。造成反射时找不到类。

出现错误的findById代码

public Trace findById(Long id) {
        log.debug("getting Trace instance with id: " + id);
        try {
            Trace instance = (Trace) getHibernateTemplate().get("Trace", id);
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }

 

修改后的方法

public Trace findById(Long id) {
        log.debug("getting Trace instance with id: " + id);
        try {
            Trace instance = (Trace) getHibernateTemplate().get("cn.cslg.Trace", id);
            return instance;
        } catch (RuntimeException re) {
            log.error("get failed", re);
            throw re;
        }
    }

2012年12月16日星期日

VMware无法识别USB设备的解决方法

我的虚拟机上认不到USB设备,发现是VMware USB Arbitration Service服务没有启动,手动启动VMware USB Arbitration Service服务,再重启VMware,虚拟机就能识别出USB设备了。

具体步骤:
1.点击开始->运行,在对话框中输入"services.msc",确定,打开windows服务管理器。

2.在服务列表中选中"VMware USB Arbitration Service",双击打开属性对话框,再选择"启动",就能启动VMware USB Arbitration Service服务了。

3.关闭VMware软件,并重新打开,启动一个虚拟机,进入系统之后VMware就会提示发现USB设备。如果要在虚拟机中使用这些USB设备(以USB摄像头为例),在VMware的菜单栏中选择VM->Removable Devices->Pixart Imaging CIF Single Chip->Connect (Disconnect form host) ,就可以了。当然,这样USB设备在连接到虚拟机的同时会断开同主机(一般为Windows系统)的连接。如果想重新在主机上使用USB设备,则在VMware菜单栏中选择VM->Removable Devices->Pixart Imaging CIF Single Chip->Disconnect (Connect to host) 。

另外补充一点:如果是AMD平台的机器,有可能会出现无法启动VMware USB Arbitration Service服务,这是AMD主板驱动中的"USB过滤器"所导致的。

解决办法是:在AMD主板驱动中,选择"ATI catalyst管理器",里面有选择"usb 过滤管理器",将其卸载之后即可启动VMware USB Arbitration Service服务。

2012年12月15日星期六

使用MyEclipse生成hibernate pojo和dao的过程

 

首先在MyEclipse中配置好数据源并打开。

选择需要生成pojo的表。

在右键菜单中选择 Hibernate Reverse Engineering,按下面的步骤进行设置。

生成pojo和dao之后,可以移动到相关的包。在DAO类中可以通过重构,将方法提取到DAO接口。

注意:如果表中没有主键,则会生成一个额外的类,并使用全部字段作为联合主键。

 

QQ截图20121215185333

 

QQ截图20121215185352

QQ截图20121215185407

2012年12月11日星期二

RDCAutoTypeAndTCATO KeePass Plugin

 

http://rdc-keepass-plugin.appspot.com/

更改android AVD模拟器创建路径位置的方法

使用eclipse创建的android AVD模拟器,默认位置一般在用户文件夹下的.android文件夹中,并且路径不可有中文。而用户文件夹一般都在系统盘,所以当创建的模拟器过多并且占用空间过大时,自然免不了导致系统盘空间紧张。那么如何修改移动AVD创建的默认位置呢?方法参考如下。

打开:计算机-->系统属性-->环境变量—>在“系统变量”那选择“新建”-->变量名为 "ANDROID_SDK_HOME” (注意,必须为这个名字!),然后把变量值改为你想把AVD所在的".android”文件夹放置的位置(如:D:\my documents)。

然后我们重启Eclipse,在Eclipse里可以看到:

preferneces ---> Android ----> Build Setting ----> Default debug keystore: D:\my documents\\.android\debug.keystore

即表明修改生效。

android avd

注意:如果你之前已经创建过avd模拟器,请把 在当前用户下的 .android文件夹删除,然后重新启动eclipse创建。或者剪切该文件夹到你设置的位置,并更改android**.ini文件里的路径为复制后的路径。

当然,你也可以用cmd命令来自定义创建AVD模拟器,此处不作过多论述。

本文来源于:『志文工作室 - 计算机基础技术学习博客
详细地址:http://www.zhiwenweb.cn/Category/Learning/android-avd-path.html

2012年12月10日星期一

Oracle创建表设置自动增长列范例


1、创建一个用户表t_sys_user,其中有id,login_name,login_pwd三个字段,ID为自动增长列:
Java代码 
  1. create table t_sys_user  
  2. (  
  3.   id number(6) not null primary key,  
  4.   login_name varchar2(50) not null,  
  5.   login_pwd varchar2(50) not null  
  6. );  
 2、创建序列:
Java代码 
  1. create sequence seq_user  
  2.        increment by 1       --指定序列号之间的间隔,该值可为正的或负的整数,但不可为0。序列为升序。忽略该子句时,缺省值为1。  
  3.        start with 1     --指定生成的第一个序列号。在升序时,序列可从比最小值大的值开始,缺省值为序列的最小值。对于降序,序列可由比最大值小的值开始,缺省值为序列的最大值。  
  4.        maxvalue 9999        --指定序列可生成的最大值。  
  5.        cycle nocache        --一直累加,不循环   
 3、创建触发器:
Java代码 
  1. create or replace trigger tri_user  
  2.            before insert on t_sys_user for each row  
  3.        begin  
  4.            select seq_user.nextval into:new.id from dual;   --这里是最容易出错的地方  
  5.        end;  
  6.        /