hibernate中出现了一个电脑出现奇怪的音乐问题

hibernate 读取数据 只有1000条!好奇怪_百度宝宝知道hibernate查询部分字段,同时映射出set集合的问题!高手进来吧!我在网上查了挺多,没有什么收获信息, hibernate查询部分字段,同时映
hibernate查询部分字段,同时映射出set集合的问题!高手进来吧!我在网上查了挺多,没有什么收获信息 ,可以查询.id=123!):(id.;&#47,警员基本信息表work:我想查询某一个警员的id和name.name)这个构造方法写好了。我想问!这个问题困扰了我好几个项目了,如何查询部分字段,工作经历表其中policeman_id是对应的警员的id.id,workplace。万一没人解决,同时也要查询出他的所有的工作经历.;/警员对应的所有工总经历
&#47.id.id=123。如,分别是..,配置文件什么的都没问题,p.;
private String workP&#47?悬赏15分有2个表;
&#47.其他属性就不写了
private String name,name,这条语句没问题,必定奖励;&#47,解决后会追加积分,p。public Class Police{
private int id;/下面是set和get和构造方法}在hibernate中相关的配置都弄好了:select p from P下面是set和get和构造方法}public Class Work{返回的结果是警员的基本信息和他所有的工作经历,policeman_id),fromDate,同时也让hibernate映射出set集合有没有高手能解决。问题一(已解决的):我想查询某一个警员的id和
private Date fromDate,toDate.。问题二(我想问的,Policeman中的set集合;,如果通过select p from Policeman p where p..name) from Policeman p where p,悬赏的积分不是浪费了吗,一旦解决后,表示这一条工作记录是哪个警员的:Policeman,用select new Policeman(p.id=123;这样查询;可以查出id=123这个警员的id和name,hibernate会自动映射出,sex,age).;
private Set work;
private int sex,hibernate会自动映射出set集合;其中new Policeman(p:(id ↑1250↑ hibernate查询部分字段,同时映射出set集合的问题!高手进来吧!我在网上查了挺多,没有什么收获信息
当然是全部映射到set中了呀,set里也是这个对象你查出的是一个对象,查出了需要的数据
你这个需求比较奇怪!而且,只是投影多少列的问题,你查询两个字段和查询所有字段都需要执行select,性能等也没有减轻为啥要只映射部分字段呢?将所有信息查出来你想用哪个就用哪个呗
你把set放在部分字段里一起查不就得了??Hibernate的increment主键生成机制带来的问题(转)
- ITeye技术网站
博客分类:
在网站运行在apache和tomcat的负载均衡之后,总是出现一些奇怪的问题。开始有一些Duplicate entry的错误,但没在意。
&&&&& 今天又看了程序运行的错误信息,发现几乎都是Duplicate entry错误,集中出现在insert数据库的时候,insert user,insert message。看了Message类的主键生成是increment类型,看了看Hibernate的源代码,发现对应increment主键生成器的org.hibernate.id.IncrementGenerator 类里面,是使用select max( columnName ) from tableName的方式来获取。原来的程序一直运行很好,但是在用两个Tomcat来负载均衡后却出现问题。为什么? IncrementGenerator类里面的generate()方法虽然被声明成了synchronized,但现在两个Tomcat分别运行在两台服务器的两个独立的Java虚拟机里,显然问题在这里,synchronized只能在一个独立的Java虚拟机内部有效。所以,在两个Tomcat 中用select max同时取主键,就相当于在没有synchronized的保护下,并发时就会取出相同的值,再insert就会发生dumplicate entry的错误。
&&&&& 后来查看Hibernate的Reference中也提到,increment不要再集群下使用。
&&&&& 问题找到了,解决的办法也很简单,就是使用MySQL自己的auto_increment功能来产生主键。只需将所有Hibernate映射文件中的 increment改为native或者identity。并将数据库的主键加上auto_increment属性。
&&&&& 查看MySQL 5.0的文档,在14.2.6.3中介绍说:
14.2.6.3. How AUTO_INCREMENT Columns Work in InnoDB
If you specify an AUTO_INCREMENT column for an InnoDB table, the table handle in the InnoDB data dictionary contains a special counter called the auto-increment counter that is used in assigning new values for the column. This counter is stored only in main memory, not on disk.
InnoDB uses the following algorithm to initialize the auto-increment counter for a table T that contains an AUTO_INCREMENT column named ai_col: After a server startup, for the first insert into a table T, InnoDB executes the equivalent of this statement:
SELECT MAX(ai_col) FROM T FOR UPDATE;
看来在给数据库主键加上auto_increment的属性后,还要重新启动一下MySQL,这样才能保证所有的auto_increment被初始化正确。
好了,开始修改,别忘了先关掉所有的Tomcat!
问题解决后的感想:
Hibernate的主键生成虽然支持很多种数据库独有的increment方式,还有他自己的select max实现的increment方式,其实这些都不是很好,假如将来真的要切换数据库,并且是在集群下运行程序,某种数据库独有的increment和 select max方式的increment都会带来问题。
Hibernate中唯一一种最简单通用的主键生成器就是uuid。虽然是个32位难读的长字符串,但是它没有跨数据库的问题,将来切换数据库极其简单方便。推荐使用!!
浏览: 233226 次
来自: 北京
盗取一时爽,全家火葬场
不错不错不错不错
写的浅显易懂,不错,赞一个。
我们平时好像不是这么写的。直接就是service了,servi ...
谢谢,也叫我瞬间明白很多,非常感谢}

我要回帖

更多关于 家门口出现奇怪符号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信