您的位置:首页 > 其它

项目开发遇到的问题以及解决方法

2014-08-21 10:51 736 查看
1.数据库命名不能含有小数点
2.使用hibernate一对多查询set集合查询,注解:@OrderBy(value = "id ASC")的 配置文件在set标签加上order-by=“id desc”

3.org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

update():一般是ID获取错误 不是正确的ID ; save():可能是表的字段是自增,而在插入记录的时候设置了ID的值导致的。

4.@JsonIgnore

避免取JSON对象时无限递归的问题. 导入import com.fasterxml.jackson.annotation.JsonIgnore;

Jar包名称:jackson-annotations-2.2.3.jar

5.嵌套json转换成java对象 导入jackson.jar包

声明ObjectMapper om = new ObjectMapper(); 导入import org.codehaus.jackson.map.ObjectMapper;

// 对象就在这里读取。

ClassA classA = om.readValue(jsonString, ClassA.class);

// 怎么用,随便。

System.out.println(classA .getClassB());

6.批量添加

-1.批量update,一条记录update一次,性能很差

update test_tbl set dr='2' where id=1;

-2.replace into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y');

或insert into test_tbl (id,dr) values (1,'2'),(2,'3'),...(x,'y') on duplicate key update dr=values(dr);

-3.创建临时表,先更新临时表,然后从临时表中update

create temporary table tmp(id int(4) primary key,dr varchar(50));

insert into tmp values (0,'gone'), (1,'xx'),...(m,'yy');

update test_tbl, tmp set test_tbl.dr=tmp.dr where test_tbl.id=tmp.id;

个人认为replace into性能较好

replace into 和insert into on duplicate key update的不同在于:

replace into 操作本质是对重复的记录先delete 后insert,如果更新的字段不全会将缺失的字段置为缺省值

insert into 则是只update重复记录,不会改变其它字段

7.MySQL 5.5版本下my.ini内[mysqld]项中不能再写default-character-set=utf8

原来在5.1版本时,为了解决中文乱码问题设置默认字符集为utf8时,在my.ini内的 [mysql] 和 [mysqld] 项中都是写:

default-character-set=utf8

到了5.5版本, [mysql] 项内可以这么写, [mysqld] 项内不能再这么写了,而是必须写:

character-set-server=utf8

8.用远程登陆客户端登陆linux

进入tomcat/logs/文件夹下

键入指令:tail -f catalina.out

这样就可以与本地电脑一样查看TOMCAT的控制台了。

9.@mappedBy 属性简单理解为设定为主表,所以另一端则需要设置外键@JoinColumn(name="fk_id")

@OneToMany 注解下返回Set集合(列如:上帝可以有多个信徒)。

@ManyToOne 注解下 设置外键 根据 外键获取到主表对象只能获取到一个对象(列如:信徒只能有一个上帝)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: