为何hibernate 映射文件中必须要有ID

我在做一个人员信息表的时候,数据库表其实不需要自增ID来做主键,完全可以用 人员编号来做主键。
但在做hibernate配置文件的时候:我必须要给数据库和javaBean中都加一个ID属性,这样应用才可以正常启用。这是为啥



1个回答

在Hibernate中必须要有一个条件来区分两条数据的不同,而在数据库中主键刚好起到这个作用,楼主你如果不想要一个额外的列来做主键,你可以把你现有的字段(人员编号)做为主键
例如:
[code="java"]

[/code]
assigned: --表示主键由用户决定,由用户赋值

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Hibernate 映射文件报错!

<p>这是我配置的映射文件</p> <p>&lt;class name="entity.Backmoney" table="backmoney"&gt;<br> &lt;id name="code" type="java.lang.String"&gt;<br>  &lt;column name="code" /&gt;<br>  &lt;generator class="assigned" /&gt;<br> &lt;/id&gt;</p> <p>----------------------------------------------------------------------------</p> <p>我数据库这个表里面的主键是Varchar2类型的! 我想自定义设置主键!</p> <p>运行的时候出错了!</p> <pre name="code" class="java">Exception in thread "main" org.hibernate.MappingException: Repeated column in mapping for entity: entity.Backmoney_detail column: code (should be mapped with insert="false" update="false") at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:652) at org.hibernate.mapping.PersistentClass.checkPropertyColumnDuplication(PersistentClass.java:674) at org.hibernate.mapping.PersistentClass.checkColumnDuplication(PersistentClass.java:696) at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:450) at org.hibernate.mapping.RootClass.validate(RootClass.java:192) at org.hibernate.cfg.Configuration.validate(Configuration.java:1102) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287) at Test.Test.test1(Test.java:46) at Test.Test.main(Test.java:17) </pre> <p> 这个问题怎么解决 大家帮忙看看~</p>

Hibernate根据映射文件生成数据库表

package com.xy.HibernateUtil; import org.hibernate.cfg.Configuration; import java.io.File; import org.hibernate.HibernateException; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; public class ExportDB { static Session session; static Configuration config = null; static Transaction tx = null; public static void main(String[] args) { /** *//** *//** *//** * 根据映射文件创建数据库结构 */ try{ config = new Configuration().configure(new File( "src/hibernate.cfg.xml")); System.out.println("Creating tables..."); SessionFactory sessionFactory = config.buildSessionFactory(); session = sessionFactory.openSession(); tx = session.beginTransaction(); SchemaExport schemaExport = new SchemaExport(config); schemaExport.create(true, true); System.out.println("Table created."); tx.commit(); } catch (HibernateException e) { e.printStackTrace(); try{ tx.rollback(); } catch (HibernateException e1) { e1.printStackTrace(); } } finally { session.close(); } } } 通过这个类生成数据库的表,为什么明明显示执行了两条CREATE语句,生成了两个表,但是在数据库中只生成了一个表啊? Creating tables... alter table t_order drop foreign key FKA0C0C3C3734A7296 drop table if exists t_customer drop table if exists t_order create table t_customer (id integer not null auto_increment, name varchar(255), age integer, primary key (id)) create table t_order (id integer not null auto_increment, name varchar(255), desc varchar(255), tim datetime, customer_id integer, primary key (id)) alter table t_order add index FKA0C0C3C3734A7296 (customer_id), add constraint FKA0C0C3C3734A7296 foreign key (customer_id) references t_customer (id) Table created. 这个是生成的SQL语句

Oracle主键为varchar hibernate映射文件例子

SSH整合时,Oracle主键为字符串自增,映射文件怎样配置啊! <id name="id" type="String" column="cat_id"> <generator class="uuid.hex"> </generator> </id> 有错!应该怎样配置啊!

使用注解代替hibernate配置文件中的many to one配置报错

添加注解的类Category映射表category,类中有个类属性account 映射表中的accound_id字段,与表Account 中的id字段关联。 现在hql查询报错 之前用hibernate反向生成的配置文件运行查询结果正常,后来将配置文件中的many to one和set用注释代替后查询报错。 之前配置文件中的配置: ![图片说明](https://img-ask.csdn.net/upload/201709/16/1505540007_395158.png) ![图片说明](https://img-ask.csdn.net/upload/201709/16/1505540073_715871.png) 后将配置文件many to one 和set 改用注释: ![图片说明](https://img-ask.csdn.net/upload/201709/16/1505540232_905625.png) ![图片说明](https://img-ask.csdn.net/upload/201709/16/1505540255_333062.png) hql语句: ![图片说明](https://img-ask.csdn.net/upload/201709/16/1505540293_741522.png) 错误提示: org.hibernate.QueryException: could not resolve property: account of: beanFactory.Category [from beanFactory.Category c left join fetch c.account where c.type like :type] 推测可能是注解哪里出问题了,没有关联到account_id 导致查询时找不到account属性,大侠看下问题在哪?

hibernate映射文件无法使用length指定int和Integer类型字段长度?

hibernate映射文件无法使用length指定int和Integer类型字段长度,正向生成的表中int和 Integer类型属性生成字段均为固定长度11 People.hbm.xml: ``` <hibernate-mapping package="com.wd.pojo"> <class name="People" table="t_people"> <id name="id" column="id" length="5"> <generator class="native"></generator> </id> <property name="age" length="5" column="age"></property> <property name="height" length="5" column="height" type="java.lang.Integer"></property> <property name="name" length="20"></property> </class> </hibernate-mapping> ``` 生成的mysql数据库中的ddl: ``` CREATE TABLE `t_people` ( `id` int(11) NOT NULL AUTO_INCREMENT, `age` int(11) DEFAULT NULL, `height` int(11) DEFAULT NULL, `name` varchar(20) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; ```

hibernate从文件映射改注解方式映射,配置怎么改

原本的都是文件映射的,applicationContext.xml里的<bean id="sessionFactory">里是这样的 ``` <property name="mappingDirectoryLocations"> <list> <value>classpath:model</value> </list> </property> ``` 但之后我想把新添加的数据表映射都使用注解映射,那之后applicationContext.xml里应该怎么写,原本的需要改动么?

在hibernate映射文件中使用uuid生成主键id,为何添加时候还会报错不能为null

![图片说明](https://img-ask.csdn.net/upload/201706/05/1496659389_656320.png)

hibernate映射视图报错

我在网上搜了一段hibernate映射视图的代码,改成自己项目所需要的,但是报错了。映射文件是: <class name="PackOut" table="View_BillInfo" > <composite-id> <key-property name="id" column="BillID" type="java.lang.String" /> <key-property name="VarietyType" type="java.lang.String" /> <key-property name="BagNum" type="java.lang.Double" /> <key-property name="Weight" type="java.lang.Double" /> <key-property name="Flourtype" type="java.lang.String" /> </composite-id> 控制台提示错误是: org.hibernate.hql.ast.QuerySyntaxException: View_BillInfo is not mapped. [from View_BillInfo] at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:157) at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87) at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70) at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:265) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3049) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688) at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544) at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) at com.huasoft.ilearning.dao.PackOutDaoImpl.queryAll(PackOutDaoImpl.java:20) at com.huasoft.ilearning.service.PackOutServiceImpl.queryAll(PackOutServiceImpl.java:18) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204) at com.sun.proxy.$Proxy10.queryAll(Unknown Source) at com.huasoft.ilearning.action.PackOutAction.queryAll(PackOutAction.java:34) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440) at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249) at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138) at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176) at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236) at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:745) Caused by: View_BillInfo is not mapped. ... 107 more 我只看到第一行:View_BillInfo is not mapped. [from View_BillInfo]没有映射成功。请问这个问题该怎么解决,从哪里着手。

SSH中做hibernate映射表时报错:unknow Oracle major version

想问各位大师一个问题: 我在SSH中做hibernate映射表时报错:unknow Oracle major version[0] Oracle version为10g、MyEclipse6.5、spring2.0、Hibernate3.0 hibernate是交给spring的配置文件applicationContext.xml管理的 好象只要是hibernate没有自己单独的配置文件.就会报这样的错.相反.只要hibernate有自己单独的配置文件的话.即使加了spring框架.再去从oracle中映射表的时候就不会报错. spring配置文件中的有关hibernate的配置信息如下: #applicationContext.xml <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"></property> <property name="url" value="jdbc:oracle:thin:@localhost:1521:MYORCL"></property> <property name="username" value="SCOTT"></property> <property name="password" value="tiger"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="datasource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> [color=red]org.hibernate.dialect.Oracle9Dialect[/color] <!--我的oracle是oracle10g.但IDE自动生成的是oracle9的方言.但即使我改为9i、10、10g之类的也不行.--> </prop> </props> </property> </bean> 我个人认为: 1.这不是数据库驱动的问题.因为如上我说.只是在hibernate用spring的配置文件时出错其他时没有错.所以并不是连接不上数据库的问题.(我用的是ojdbc14.jar包,jdbc12.jar包出现这个问题后,我用了ojdbc14.jar包依然没有解决) 2.好多都说是oracle方言的问题.但我一直不明白为什么只是出现在把hibernate用spring的配置文件时会出现这个问题.而且如果有hibernate的单独配置文件的话.hibernate.cfg.xml中的方言属性不也是IDE自动生成的吗.我并没有改过.但却没有问题出现阿?而且在spring配置文件中同样也会自动生成这个方言属性阿.是和单独的hibernate配置文件中生成的一样阿!并不是说没有阿!(所以应该不是IDE的问题)所以我就有个疑问:难道hibernate框架一定要有一个自己单独的配置文件吗?但如果确是方言问题.请您说清楚一下到底怎样改.在哪个文件里改 2.也不是什么工程目录下那些框架的一些.myhibernatedata这样的配置文件的问题.因为我打开看了.里面写的hibernate就是用的spring的配置文件applicationContext.xml.说明hibernate框架知道自己现在用的是spring的配置文件.并不是hibernate框架不知道自己的配置文件:不信.这个文件的内容如下.(都是IDE自动自动生成的): .myhibernatedata文件内容: # #Sat Dec 27 12:53:30 CST 2008 genBasicCompId=false sessionFactoryName= profile= daoSFId=sessionFactory version=3.0 jndiPath= detectM2M=false reStrategyClass=[size=medium][/size][size=large][/size] springDaoFile=src/yaye/net/conf/applicationContext.xml useJavaTypes=true keyGenerator=assigned libInstallFolder=/WebRoot/WEB-INF/lib addLibs2Project=true genVersionTag=false sessionFactoryId=sessionFactory basePersistenceClass= reSettingsFile= configFile=/login-spring/src/yaye/net/conf/applicationContext.xml createConfigFile=false addLibs2Classpath=true 3.也不题路径的问题.我都仔细检查过了.路径没有错. 不甚感激.

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多对一映射文件的问题

我在配映射文件时遇到A表外键名和B表的主键名不同,不知道如何写hbm.xml了。如我有业务表A, 里面有个外键creatorID, 关联到StaffInfo的主键staffID,那么我在A表中加入属性StaffInfo creator。问题是在hbm.xml中如何让staff.staffID对应A表的creatorID呢?我按照reference doc里面的配法 <br /><pre name="code" class="java">&lt;class name="A"&gt; &lt;id name="id" column="AID"&gt; &lt;generator class="native"/&gt; &lt;/id&gt; &lt;many-to-one name="staff" column="staffID" unique="true" not-null="true"/&gt; &lt;/class&gt;</pre> <br />这样程序调用setCreator()或者getCreator()时会报错。由于StaffInfo是框架中的表,所以我无权更改这个表的column,而在A表内,由于还有其他的column也是staffID的,所以也不可能把creator改成staffID。那么这个问题该如何解决呢?

spring整合 hibernate 映射出问题

报错信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegist Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:389) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1799) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:339) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:427) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:412) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ... 25 more Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341) at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:506) at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) ... 34 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) ... 43 more Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for emloyees in class com.imooc.employee.domain.Department at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:316) at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:310) at org.hibernate.mapping.Property.getGetter(Property.java:321) at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:444) at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:200) at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82) ... 48 more 实体类 一方package com.imooc.employee.domain; import java.util.HashSet; import java.util.Set; public class Department { private Integer did; private String dname; private String ddesc; private Set<Employee> employees = new HashSet<Employee>(); public Integer getDid() { return did; } public Set<Employee> getEmployees() { return employees; } public void setEmployees(Set<Employee> employees) { this.employees = employees; } public void setDid(Integer did) { this.did = did; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getDdesc() { return ddesc; } public void setDdesc(String ddesc) { this.ddesc = ddesc; } } 多方 package com.imooc.employee.domain; import java.util.Date; public class Employee { private Integer eid; private String ename; private String sex; private Date birthday; private Date joinDate; private String eno; private String username; private String password; private Department department; public Integer getEid() { return eid; } public void setEid(Integer eid) { this.eid = eid; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } public String getEno() { return eno; } public void setEno(String eno) { this.eno = eno; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } } 配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.imooc.employee.domain.Department" table="department"> <id name="did" column="did"> <generator class="native"/> </id> <property name="dname" column="dname" length="20"/> <property name="ddesc" column="ddesc" length="100"/> <set name="emloyees"> <key column="dno"/> <one-to-many class="com.imooc.employee.domain.Employee"/> </set> </class> </hibernate-mapping> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.imooc.employee.domain.Employee" table="employee"> <id name="eid" column="eid"> <generator class="native" /> </id> <property name="ename" column="ename" length="20" /> <property name="sex" column="sex" length="10" /> <property name="birthday" column="birthday" /> <property name="joinDate" column="joinDate" /> <property name="eno" column="eno" length="20" /> <property name="username" column="username" length="20" /> <property name="password" column="password" length="20" /> <many-to-one name="department" class="com.imooc.employee.domain.Department" column="dno"/> </class> </hibernate-mapping> jar包为 antlr-2.7.7.jar aopalliance-1.0.jar asm-5.1.jar aspectjweaver.jar c3p0-0.9.5.2.jar catalina.jar classmate-1.3.0.jar commons-fileupload-1.3.2.jar commons-io-2.4.jar commons-lang3-3.2.jar commons-logging-1.1.3.jar dom4j-1.6.1.jar ehcache-2.10.3.jar freemarker-2.3.23.jar hibernate-commons-annotations-4.0.2.Final.jar hibernate-core-4.2.21.Final.jar hibernate-ehcache-4.2.18.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar jandex-2.0.3.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.1.0.GA.jar jboss-logmanager-2.0.4.Final.jar jboss-transaction-api_1.1_spec-1.0.1.Final.jar log4j-api-2.7.jar log4j-core-2.7.jar log4j-jboss-logmanager-1.1.2.Final.jar mchange-commons-java-0.2.11.jar mysql-connector-java-5.0.8.jar ognl-3.1.12.jar servlet-api.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.7.19.jar spring-aop-4.0.0.RELEASE.jar spring-aspects-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-context-support-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE-javadoc.jar spring-core-4.0.0.RELEASE-sources.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE-javadoc.jar spring-expression-4.0.0.RELEASE-sources.jar spring-expression-4.0.0.RELEASE.jar spring-jdbc-4.0.0.RELEASE.jar spring-orm-4.0.0.RELEASE-javadoc.jar spring-orm-4.0.0.RELEASE-sources.jar spring-orm-4.0.0.RELEASE.jar spring-struts-3.2.0.RELEASE.jar spring-test-4.0.0.RELEASE.jar spring-tx-4.0.0.RELEASE-javadoc.jar spring-tx-4.0.0.RELEASE-sources.jar spring-tx-4.0.0.RELEASE.jar spring-web-4.0.0.RELEASE-javadoc.jar spring-web-4.0.0.RELEASE-sources.jar spring-web-4.0.0.RELEASE.jar struts2-convention-plugin-2.5.10.jar struts2-core-2.5.10.jar struts2-spring-plugin-2.5.10.jar xwork - jar.jar 哪位大神能给看一下 问题出在哪里

spring 加载hibernate配置文件时候tomcat无法启动

我在做一个web项目的入门小例子,可是tomcat无法启动 。 服务器为 :tomcat 5 开发环境为: spring+hibernate+struts 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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <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:3306/advertisement"/> <property name = "username" value = "root" /> <property name = "password" value ="850524li"/> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name ="dataSource" ref = "dataSource" /> [color=red] <property name = "mappingResources"> <list> <value>/Login.hbm.xml</value> </list> </property> [/color] <!-- <property name ="hibernateProperties"> <props> <prop key = "hibernate.dialect">org.hibernate.dialect.MySQLDBDialect</prop> </props> </property> --> </bean> <!-- <bean id="LoginDAO" class="com.advertisement.login.dao.LoginDAO"> <property name="sessionFactory"> <ref bean="sessionFactory"></ref> </property> </bean> <bean id = "facadeManager" class = "com.advertisement.login.manager.FacadeManager"> <property name = "loginDAO" ref = "LoginDAO"/> </bean> --> <bean name = "/loginAction" class = "com.advertisement.login.action.LoginAction"> <!-- <property name = "facadeManager" ref = "facadeManager"/>--> </bean> </beans> struts的配置文件如下 。 从struts中启动spring <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd"> <struts-config> <data-sources /> <form-beans > <form-bean name="loginForm" type="com.advertisement.login.form.LoginForm" /> </form-beans> <global-exceptions /> <global-forwards /> <action-mappings > <action path="/loginAction" type= "com.advertisement.login.action.LoginAction" name = "loginForm" validate="false" input = "/login1.jsp"> <forward name="success" path="/success.jsp" /> <forward name = "error" path = "/error.jsp"/> </action> </action-mappings> <controller processorClass = "org.springframework.web.struts.DelegatingRequestProcessor"/> <plug-in className = "org.springframework.web.struts.ContextLoaderPlugIn" > <set-property property = "contextConfigLocation" value = "/WEB-INF/applicationContext.xml"/> </plug-in> </struts-config> hibernate的映射文件如下:: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.advertisement.login.dao.Login" table="login" catalog="advertisement"> <id name="keyid" type="java.lang.Long"> <column name="keyid" /> <generator class="assigned" /> </id> <property name="operatorNo" type="java.lang.String"> <column name="operatorNo" length="50" not-null="true" /> </property> <property name="operatorName" type="java.lang.String"> <column name="operatorName" length="50" not-null="true" /> </property> <property name="operatorType" type="java.lang.String"> <column name="operatorType" length="50" not-null="true" /> </property> <property name="telephone" type="java.lang.String"> <column name="telephone" length="50" not-null="true" /> </property> </class> </hibernate-mapping>

这个hibernate映射文件怎么写啊?

[code="java"] import java.util.Set; public class Organization { private int id; private String name; private String sn; private String description; //每个组织有一个上级组织. private Organization parent; //每个组织有多个下级组织. private Set<Organization> children; } [/code] 谢谢大家了.....

hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改?

hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [color=red]按 jones 的意思是不是 read-only 形式下,不能对二级缓存中的对象做任何修改,但可以修改该对象在数据库中的状态 是吗?那么我还有个,在前面的基础上,即在第一次查询 和第二次查询的之间放入一段修改缓存中某对象的时咋出现题呢,代码如下[/color] [code="java"]s = HibernateUtils.getSession() ; //s.setCacheMode(CacheMode.GET) ; User u = new User() ; u.setId("8aa3b33c1d8eb43b011d8eb441300001") ; u.setName("yushan5118") ; s.saveOrUpdate(u) ; s.beginTransaction().commit() ; s.close() ;[/code] [color=red]出现一个异常: ERROR ReadOnlyCache:42 - Application attempted to edit read only item: com.c35.hibernate.po.User#8aa3b33c1d8eb43b011d8eb441300001 且数据库中的该对象属性未变化? 按理不是说不能修改缓存里面的,但可以操纵数据库吗?谢谢[/color] [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [color=red]按 jones 的意思是不是 read-only 形式下,不能对二级缓存中的对象做任何修改,但可以修改该对象在数据库中的状态 是吗?那么我还有个,在前面的基础上,即在第一次查询 和第二次查询的之间放入一段修改缓存中某对象的时咋出现题呢,代码如下[/color] [code="java"]s = HibernateUtils.getSession() ; //s.setCacheMode(CacheMode.GET) ; User u = new User() ; u.setId("8aa3b33c1d8eb43b011d8eb441300001") ; u.setName("yushan5118") ; s.saveOrUpdate(u) ; s.beginTransaction().commit() ; s.close() ;[/code] [color=red]出现一个异常: ERROR ReadOnlyCache:42 - Application attempted to edit read only item: com.c35.hibernate.po.User#8aa3b33c1d8eb43b011d8eb441300001 且数据库中的该对象属性未变化? 按理不是说不能修改缓存里面的,但可以操纵数据库吗?谢谢[/color] read-only只是Hibernate用来决定如何处理缓存数据的,如果你的缓存对象是read-only的,Hibernate可不负责你的缓存与数据库之间的同步处理,因为Hibernate认为你这个对象根本就永远都不会改变。 [color=red]那么 Hibernate 只对缓存里面的对象read-only,当我修改某个对象的时候,hibernate难道还会判断我修改的对象是否是缓存中已经有的,如果有就不接受修改 是吗?要是这样,想修改该对象在数据库中的内容 该咋办,又不影响read-only?能否帮忙解释一下为何会出现ERROR ReadOnlyCache:42错误?[/color] 在此感谢jones [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [color=red]按 jones 的意思是不是 read-only 形式下,不能对二级缓存中的对象做任何修改,但可以修改该对象在数据库中的状态 是吗?那么我还有个,在前面的基础上,即在第一次查询 和第二次查询的之间放入一段修改缓存中某对象的时咋出现题呢,代码如下[/color] [code="java"]s = HibernateUtils.getSession() ; //s.setCacheMode(CacheMode.GET) ; User u = new User() ; u.setId("8aa3b33c1d8eb43b011d8eb441300001") ; u.setName("yushan5118") ; s.saveOrUpdate(u) ; s.beginTransaction().commit() ; s.close() ;[/code] [color=red]出现一个异常: ERROR ReadOnlyCache:42 - Application attempted to edit read only item: com.c35.hibernate.po.User#8aa3b33c1d8eb43b011d8eb441300001 且数据库中的该对象属性未变化? 按理不是说不能修改缓存里面的,但可以操纵数据库吗?谢谢[/color] [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [color=red]按 jones 的意思是不是 read-only 形式下,不能对二级缓存中的对象做任何修改,但可以修改该对象在数据库中的状态 是吗?那么我还有个,在前面的基础上,即在第一次查询 和第二次查询的之间放入一段修改缓存中某对象的时咋出现题呢,代码如下[/color] [code="java"]s = HibernateUtils.getSession() ; //s.setCacheMode(CacheMode.GET) ; User u = new User() ; u.setId("8aa3b33c1d8eb43b011d8eb441300001") ; u.setName("yushan5118") ; s.saveOrUpdate(u) ; s.beginTransaction().commit() ; s.close() ;[/code] [color=red]出现一个异常: ERROR ReadOnlyCache:42 - Application attempted to edit read only item: com.c35.hibernate.po.User#8aa3b33c1d8eb43b011d8eb441300001 且数据库中的该对象属性未变化? 按理不是说不能修改缓存里面的,但可以操纵数据库吗?谢谢[/color] read-only只是Hibernate用来决定如何处理缓存数据的,如果你的缓存对象是read-only的,Hibernate可不负责你的缓存与数据库之间的同步处理,因为Hibernate认为你这个对象根本就永远都不会改变。 [color=red]那么 Hibernate 只对缓存里面的对象read-only,当我修改某个对象的时候,hibernate难道还会判断我修改的对象是否是缓存中已经有的,如果有就不接受修改 是吗?要是这样,想修改该对象在数据库中的内容 该咋办,又不影响read-only?能否帮忙解释一下为何会出现ERROR ReadOnlyCache:42错误?[/color] 在此感谢jones [color=red]还有就是 当我开启 s.setCacheMode(CacheMode.GET) ,应该是不该把这个修改的对象放到二级缓存中,由此我认为应该不会与二级缓存的read-only产生冲突啊,请jones 帮忙解释一下,小弟不胜感激啊[/color] [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.list().iterator(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("from User") ; //q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; s.beginTransaction() ; User user = new User() ; user.setUserName("yu") ; user.setPwd("123") ; Serializable id = s.save(user) ; s.beginTransaction().commit() ; s.close() ; System.out.println("----------------------------") ; s = HibernateUtils.getSession() ; q = s.createQuery("from User") ; // q.setCacheable(true) ; for(Iterator iter=q.iterate(); iter.hasNext();){ User u = (User)iter.next() ; System.out.println("user.getName ="+u.getUserName()) ; } s.close() ; } [/code] 输出结果: Hibernate: select user0_.id as id0_, user0_.userName as userName0_, user0_.pwd as pwd0_, user0_.createTime as createTime0_ from User user0_ user.getName =yushan ---------------------------- Hibernate: insert into User (userName, pwd, createTime, id) values (?, ?, ?, ?) ---------------------------- Hibernate: select user0_.id as col_0_0_ from User user0_ user.getName =yushan user.getName =yu 以上代码前提是已经开启查询缓存和二级缓存,User设置为read-only,第一次取出一条,然后增加条,为何第二次取的时候会有两条呢,而且还是从缓存中取得的?按理来说经过第一次取后二级缓存中只有一条记录,当save的时候也会往二级缓存中增加一条记录,但是第二次取的时候,因为二级缓存生存周期还未失效,且还是read-only,那么二级中应该只有一条啊?为何呢,请详解谢谢! [color=red]按 jones 的意思是不是 read-only 形式下,不能对二级缓存中的对象做任何修改,但可以修改该对象在数据库中的状态 是吗?那么我还有个,在前面的基础上,即在第一次查询 和第二次查询的之间放入一段修改缓存中某对象的时咋出现题呢,代码如下[/color] [code="java"]s = HibernateUtils.getSession() ; //s.setCacheMode(CacheMode.GET) ; User u = new User() ; u.setId("8aa3b33c1d8eb43b011d8eb441300001") ; u.setName("yushan5118") ; s.saveOrUpdate(u) ; s.beginTransaction().commit() ; s.close() ;[/code] [color=red]出现一个异常: ERROR ReadOnlyCache:42 - Application attempted to edit read only item: com.c35.hibernate.po.User#8aa3b33c1d8eb43b011d8eb441300001 且数据库中的该对象属性未变化? 按理不是说不能修改缓存里面的,但可以操纵数据库吗?谢谢[/color] [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 [b]问题补充:[/b] hibernate 二级缓存 中将映射文件设置为 read-only,为何还能进行增删改? 例如某User对象; <hibernate-mapping> <class name="com.c35.hibernate.po.User"> <cache usage="read-only"/> <id name="id"> <generator class="uuid"/> </id> <property name="name"/> <property name="pwd"/> </class> </hibernate-mapping> 为何还可以进行User进行增删改呢?不是只读吗?谢谢 测试代码如下: [code="java"] public void testCache1(){ Session s = HibernateUtils.getSession() ; Query q = s.createQuery("fro

spring hibernate3.2映射失败

错误信息,求高手帮下忙,弄了很久了 [code="java"] 2011-7-16 20:38:17 org.apache.catalina.core.StandardContext listenerStart 严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: could not instantiate id generator [entity-name=com.adtech.domain.Monitor] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1336) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:471) 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:220) 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:423) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:729) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:381) at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:246) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:189) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4135) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4630) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546) at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1041) at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:964) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:502) at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277) at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053) at org.apache.catalina.core.StandardHost.start(StandardHost.java:785) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445) at org.apache.catalina.core.StandardService.start(StandardService.java:519) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:581) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) Caused by: org.hibernate.MappingException: could not instantiate id generator [entity-name=com.adtech.domain.Monitor] at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:132) at org.hibernate.mapping.SimpleValue.createIdentifierGenerator(SimpleValue.java:175) at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:230) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1341) at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:805) at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:745) at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:134) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1367) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1333) ... 39 more Caused by: org.hibernate.MappingException: could not interpret id generator strategy: com.jbetter.hibernate.IdGenerator at org.hibernate.id.IdentifierGeneratorFactory.getIdentifierGeneratorClass(IdentifierGeneratorFactory.java:151) at org.hibernate.id.IdentifierGeneratorFactory.create(IdentifierGeneratorFactory.java:124) ... 47 more [/code] .hbm.xml文件 [code="java"] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse Persistence Tools --> <hibernate-mapping> <class name="com.adtech.domain.Monitor" table="MONITOR" lazy="false" dynamic-insert="true" dynamic-update="true"> <id name="idPK" type="java.lang.Long"> <column name="ID" /> <generator class="com.jbetter.hibernate.IdGenerator" /> </id> <property name="message" type="java.lang.String"> <column name="MESSAGE" length="64" /> </property> <property name="accessTime" type="java.util.Date"> <column name="ACCESS_TIME" length="7" /> </property> </class> </hibernate-mapping> [/code] java文件是生成的 [code="java"] /** * Monitor entity. * * @author MyEclipse Persistence Tools */ @SuppressWarnings("serial") public class Monitor implements java.io.Serializable { // Fields /** * */ private static final long serialVersionUID = 1L; private Long idPK; private String message; private Date accessTime; // Constructors /** default constructor */ public Monitor() { } /** minimal constructor */ /** full constructor */ public Monitor(Long idPK, String message, Date accessTime) { this.idPK = idPK; this.message = message; this.accessTime = accessTime; } // Property accessors public String getMessage() { return this.message; } public void setMessage(String message) { this.message = message; } public Date getAccessTime() { return this.accessTime; } public void setAccessTime(Date accessTime) { this.accessTime = accessTime; } public Long getIdPK() { return idPK; } public void setIdPK(Long idPK) { this.idPK = idPK; } } [/code]

一个登录实例的hibernate 映射问题

这是一个hibernate+struts的登录实验。用的mySQL数据库,struts控制的前台没有问题,只是一登录就出现这种错误。 org.hibernate.hql.ast.QuerySyntaxException: user is not mapped. [FROM user AS u WHERE u.uerName=? AND u.password=?] at org.hibernate.hql.ast.util.SessionFactoryHelper.requireClassPersister(SessionFactoryHelper.java:157) at org.hibernate.hql.ast.tree.FromElementFactory.addFromElement(FromElementFactory.java:87) at org.hibernate.hql.ast.tree.FromClause.addFromElement(FromClause.java:70) at org.hibernate.hql.ast.HqlSqlWalker.createFromElement(HqlSqlWalker.java:265) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElement(HqlSqlBaseWalker.java:3049) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromElementList(HqlSqlBaseWalker.java:2938) at org.hibernate.hql.antlr.HqlSqlBaseWalker.fromClause(HqlSqlBaseWalker.java:688) at org.hibernate.hql.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:544) at org.hibernate.hql.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:281) at org.hibernate.hql.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:229) at org.hibernate.hql.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:218) at org.hibernate.hql.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:158) at org.hibernate.hql.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:109) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:75) at org.hibernate.engine.query.HQLQueryPlan.<init>(HQLQueryPlan.java:54) at org.hibernate.engine.query.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:71) at org.hibernate.impl.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:133) at org.hibernate.impl.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:112) at org.hibernate.impl.SessionImpl.createQuery(SessionImpl.java:1583) at com.netBook.impl.userImpl.isUser(userImpl.java:30) at com.netBook.struts.action.LoginAction.insert(LoginAction.java:49) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274) at org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194) at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) at javax.servlet.http.HttpServlet.service(HttpServlet.java:710) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:818) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Thread.java:619) Caused by: user is not mapped. ... 45 more 我的hibernate.cfg.xml为: <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="connection.url">jdbc:mysql://localhost:3306/netbook</property> <property name="connection.username">root</property> <property name="connection.password">8936</property> <property name="connection.driver_class"> com.mysql.jdbc.Driver </property> <property name="myeclipse.connection.profile"> mySQLDatabase </property> <mapping resource="com/netBook/pojo/User.hbm.xml" /> </session-factory> </hibernate-configuration> 我的pojo类为: package com.netBook.pojo; public class User { private String userName; private String password; private String sex; private String telepone; private String Email; private String address; private String postalcode; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getEmail() { return Email; } public void setEmail(String Email) { this.Email = Email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getPostalcode() { return postalcode; } public void setPostalcode(String postalcode) { this.postalcode = postalcode; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getTelepone() { return telepone; } public void setTelepone(String telepone) { this.telepone = telepone; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } } 我的User.hbm.xml文件为: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <!-- Mapping file autogenerated by MyEclipse - Hibernate Tools --> <hibernate-mapping> <class name="com.netBook.pojo.User" table="user" catalog="netbook"> <id name="userName" type="java.lang.String"> <column name="userName" length="20" /> <generator class="assigned" /> </id> <property name="password" type="java.lang.String"> <column name="password" length="20" not-null="true" /> </property> <property name="sex" type="java.lang.String"> <column name="sex" length="5" not-null="true" /> </property> <property name="telepone" type="java.lang.String"> <column name="telepone" length="20" not-null="true" /> </property> <property name="Email" type="java.lang.String"> <column name="Email" length="40" not-null="true" /> </property> <property name="address" type="java.lang.String"> <column name="address" length="40" not-null="true" /> </property> <property name="postalcode" type="java.lang.String"> <column name="postalcode" length="10" not-null="true" /> </property> </class> </hibernate-mapping> session工厂为: package com.netBook.factory; import org.hibernate.Session; import org.hibernate.cfg.Configuration; public class sessionFactory { public static Session getSession(){ Session session=null; session = new Configuration().configure().buildSessionFactory() .openSession(); return session; } } dao工厂为: package com.netBook.factory; import com.netBook.dao.userDao; import com.netBook.impl.userImpl; public class daoFactory { public static userDao getUserImpl(){ return new userImpl(); } } dao接口为: package com.netBook.dao; import java.util.List; import com.netBook.pojo.User; public interface userDao { // 判断是否会员 public boolean isUser(User user) throws Exception; } 实现为: package com.netBook.impl; import java.util.Iterator; import java.util.List; import org.hibernate.Query; import org.hibernate.Session; import com.netBook.dao.userDao; import com.netBook.factory.sessionFactory; import com.netBook.pojo.User; public class userImpl implements userDao{ private Session session; public userImpl(){ this.session=sessionFactory.getSession(); } public boolean isUser(User user) throws Exception { boolean flag=false; String hql="FROM user AS u WHERE u.uerName=? AND u.password=?"; Query q=this.session.createQuery(hql); q.setString(0, user.getUserName()); q.setString(1, user.getPassword()); Iterator iter=q.list().iterator(); if(iter.hasNext()){ flag=true; } this.session.close(); return flag; } } 本人刚接触框架,是在看不出错在哪里?特此请教!只保留登录功能,数据库已经插入数据。如若有必要,将工程上传,请高手过目。

hibernate 映射问题 一对多映射

报错信息 org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegist Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:185) at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:135) at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:389) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1799) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1870) at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.buildSessionFactory(LocalSessionFactoryBuilder.java:339) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:427) at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:412) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ... 25 more Caused by: org.hibernate.HibernateException: Unable to instantiate default tuplizer [org.hibernate.tuple.entity.PojoEntityTuplizer] at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:138) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructDefaultTuplizer(EntityTuplizerFactory.java:188) at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:341) at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:506) at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:146) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:163) ... 34 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.hibernate.tuple.entity.EntityTuplizerFactory.constructTuplizer(EntityTuplizerFactory.java:135) ... 43 more Caused by: org.hibernate.PropertyNotFoundException: Could not find a getter for emloyees in class com.imooc.employee.domain.Department at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:316) at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:310) at org.hibernate.mapping.Property.getGetter(Property.java:321) at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:444) at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:200) at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:82) ... 48 more 实体类 一方package com.imooc.employee.domain; import java.util.HashSet; import java.util.Set; public class Department { private Integer did; private String dname; private String ddesc; private Set<Employee> employees = new HashSet<Employee>(); public Integer getDid() { return did; } public Set<Employee> getEmployees() { return employees; } public void setEmployees(Set<Employee> employees) { this.employees = employees; } public void setDid(Integer did) { this.did = did; } public String getDname() { return dname; } public void setDname(String dname) { this.dname = dname; } public String getDdesc() { return ddesc; } public void setDdesc(String ddesc) { this.ddesc = ddesc; } } 多方 package com.imooc.employee.domain; import java.util.Date; public class Employee { private Integer eid; private String ename; private String sex; private Date birthday; private Date joinDate; private String eno; private String username; private String password; private Department department; public Integer getEid() { return eid; } public void setEid(Integer eid) { this.eid = eid; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public Date getJoinDate() { return joinDate; } public void setJoinDate(Date joinDate) { this.joinDate = joinDate; } public String getEno() { return eno; } public void setEno(String eno) { this.eno = eno; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Department getDepartment() { return department; } public void setDepartment(Department department) { this.department = department; } } 配置文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.imooc.employee.domain.Department" table="department"> <id name="did" column="did"> <generator class="native"/> </id> <property name="dname" column="dname" length="20"/> <property name="ddesc" column="ddesc" length="100"/> <set name="emloyees"> <key column="dno"/> <one-to-many class="com.imooc.employee.domain.Employee"/> </set> </class> </hibernate-mapping> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.imooc.employee.domain.Employee" table="employee"> <id name="eid" column="eid"> <generator class="native" /> </id> <property name="ename" column="ename" length="20" /> <property name="sex" column="sex" length="10" /> <property name="birthday" column="birthday" /> <property name="joinDate" column="joinDate" /> <property name="eno" column="eno" length="20" /> <property name="username" column="username" length="20" /> <property name="password" column="password" length="20" /> <many-to-one name="department" class="com.imooc.employee.domain.Department" column="dno"/> </class> </hibernate-mapping> jar包为 antlr-2.7.7.jar aopalliance-1.0.jar asm-5.1.jar aspectjweaver.jar c3p0-0.9.5.2.jar catalina.jar classmate-1.3.0.jar commons-fileupload-1.3.2.jar commons-io-2.4.jar commons-lang3-3.2.jar commons-logging-1.1.3.jar dom4j-1.6.1.jar ehcache-2.10.3.jar freemarker-2.3.23.jar hibernate-commons-annotations-4.0.2.Final.jar hibernate-core-4.2.21.Final.jar hibernate-ehcache-4.2.18.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar jandex-2.0.3.Final.jar javassist-3.18.1-GA.jar jboss-logging-3.1.0.GA.jar jboss-logmanager-2.0.4.Final.jar jboss-transaction-api_1.1_spec-1.0.1.Final.jar log4j-api-2.7.jar log4j-core-2.7.jar log4j-jboss-logmanager-1.1.2.Final.jar mchange-commons-java-0.2.11.jar mysql-connector-java-5.0.8.jar ognl-3.1.12.jar servlet-api.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.7.19.jar spring-aop-4.0.0.RELEASE.jar spring-aspects-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar spring-context-4.0.0.RELEASE.jar spring-context-support-4.0.0.RELEASE.jar spring-core-4.0.0.RELEASE-javadoc.jar spring-core-4.0.0.RELEASE-sources.jar spring-core-4.0.0.RELEASE.jar spring-expression-4.0.0.RELEASE-javadoc.jar spring-expression-4.0.0.RELEASE-sources.jar spring-expression-4.0.0.RELEASE.jar spring-jdbc-4.0.0.RELEASE.jar spring-orm-4.0.0.RELEASE-javadoc.jar spring-orm-4.0.0.RELEASE-sources.jar spring-orm-4.0.0.RELEASE.jar spring-struts-3.2.0.RELEASE.jar spring-test-4.0.0.RELEASE.jar spring-tx-4.0.0.RELEASE-javadoc.jar spring-tx-4.0.0.RELEASE-sources.jar spring-tx-4.0.0.RELEASE.jar spring-web-4.0.0.RELEASE-javadoc.jar spring-web-4.0.0.RELEASE-sources.jar spring-web-4.0.0.RELEASE.jar struts2-convention-plugin-2.5.10.jar struts2-core-2.5.10.jar struts2-spring-plugin-2.5.10.jar xwork - jar.jar 哪位大神能给看一下 问题出在哪里

hibernate映射表报错 unknown Oracle major version [0]

我在MyEclipse中通过hibernate映射表的时候总是报错 在“Generating Artifacts”期间发生了内部错误。 unknown Oracle major version [0] 我查看了MyEclipse的日志文件信息如下: !ENTRY org.eclipse.core.jobs 4 2 2008-11-08 09:56:42.031 !MESSAGE 在“Generating Artifacts”期间发生了内部错误。 !STACK 0 org.hibernate.HibernateException: unknown Oracle major version [0] at org.hibernate.dialect.DialectFactory$1.getDialectClass(DialectFactory.java:135) at org.hibernate.dialect.DialectFactory.determineDialect(DialectFactory.java:65) at org.hibernate.dialect.DialectFactory.buildDialect(DialectFactory.java:39) at org.hibernate.cfg.SettingsFactory.determineDialect(SettingsFactory.java:426) at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:128) at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2005) at com.genuitec.eclipse.hibernate.wizards.MEJDBCMetaDataConfiguration.readFromJDBC(MEJDBCMetaDataConfiguration.java:72) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob$7.execute(GenerateArtifactsJob.java:877) at org.hibernate.console.execution.DefaultExecutionContext.execute(DefaultExecutionContext.java:65) at org.hibernate.console.ConsoleConfiguration.execute(ConsoleConfiguration.java:91) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.buildConfiguration(GenerateArtifactsJob.java:858) at com.genuitec.eclipse.hibernate.wizards.GenerateArtifactsJob.run(GenerateArtifactsJob.java:405) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) IDE:MyEclipse 7.0 我查了网上的资料,有的说是在spring中添加方言,但还是出了问题, 我的数据库是Oracle9i2,有的说是把驱动换成ojdbc14.jar,但是问题还是没有解决。 这个问题困扰了我很久 :cry: ,不知道哪位前辈能帮我解决一下,谢谢。 [b]问题补充:[/b] 我spring原来的配置是 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9Dialect</prop> 我改成了 <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> 问题还是没有解决。 [b]问题补充:[/b] 我只是想用IDE通过hibernate映射表,自动生成dao和hbm.xml文件,不用启动服务器吧。 补充一下,我的tomcat是版本是5.5. [b]问题补充:[/b] 我做的是ssh。我把hibernate放在了spring中进行管理。 以下是我的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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <bean id="DataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"> </property> <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:db"> </property> <property name="username" value="test"></property> <property name="password" value="admin"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="DataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle9iDialect</prop> </props> </property> </bean></beans>

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

navicat(内含激活码)

navicat支持mysql的可视化操作,内涵激活码,不用再忍受弹框的痛苦。

HTML期末大作业

这是我自己做的HTML期末大作业,花了很多时间,稍加修改就可以作为自己的作业了,而且也可以作为学习参考

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

学生成绩管理系统(PHP + MYSQL)

做的是数据库课程设计,使用的php + MySQL,本来是黄金搭配也就没啥说的,推荐使用wamp服务器,里面有详细的使用说明,带有界面的啊!呵呵 不行的话,可以给我留言!

面试了一个 31 岁程序员,让我有所触动,30岁以上的程序员该何去何从?

最近面试了一个31岁8年经验的程序猿,让我有点感慨,大龄程序猿该何去何从。

程序员的兼职技能课

获取讲师答疑方式: 在付费视频第一节(触摸命令_ALL)片头有二维码及加群流程介绍 限时福利 原价99元,今日仅需39元!购课添加小助手(微信号:itxy41)按提示还可领取价值800元的编程大礼包! 讲师介绍: 苏奕嘉&nbsp;前阿里UC项目工程师 脚本开发平台官方认证满级(六级)开发者。 我将如何教会你通过【定制脚本】赚到你人生的第一桶金? 零基础程序定制脚本开发课程,是完全针对零脚本开发经验的小白而设计,课程内容共分为3大阶段: ①前期将带你掌握Q开发语言和界面交互开发能力; ②中期通过实战来制作有具体需求的定制脚本; ③后期将解锁脚本的更高阶玩法,打通任督二脉; ④应用定制脚本合法赚取额外收入的完整经验分享,带你通过程序定制脚本开发这项副业,赚取到你的第一桶金!

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

Java8零基础入门视频教程

这门课程基于主流的java8平台,由浅入深的详细讲解了java SE的开发技术,可以使java方向的入门学员,快速扎实的掌握java开发技术!

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

多功能数字钟.zip

利用数字电子计数知识设计并制作的数字电子钟(含multisim仿真),该数字钟具有显示星期、24小时制时间、闹铃、整点报时、时间校准功能

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

想学好JAVA必须要报两万的培训班吗? Java大神勿入 如果你: 零基础想学JAVA却不知道从何入手 看了一堆书和视频却还是连JAVA的环境都搭建不起来 囊中羞涩面对两万起的JAVA培训班不忍直视 在职没有每天大块的时间专门学习JAVA 那么恭喜你找到组织了,在这里有: 1. 一群志同道合立志学好JAVA的同学一起学习讨论JAVA 2. 灵活机动的学习时间完成特定学习任务+每日编程实战练习 3. 热心助人的助教和讲师及时帮你解决问题,不按时完成作业小心助教老师的家访哦 上一张图看看前辈的感悟: &nbsp; &nbsp; 大家一定迫不及待想知道什么是极简JAVA学习营了吧,下面就来给大家说道说道: 什么是极简JAVA学习营? 1. 针对Java小白或者初级Java学习者; 2. 利用9天时间,每天1个小时时间; 3.通过 每日作业 / 组队PK / 助教答疑 / 实战编程 / 项目答辩 / 社群讨论 / 趣味知识抢答等方式让学员爱上学习编程 , 最终实现能独立开发一个基于控制台的‘库存管理系统’ 的学习模式 极简JAVA学习营是怎么学习的? &nbsp; 如何报名? 只要购买了极简JAVA一:JAVA入门就算报名成功! &nbsp;本期为第四期极简JAVA学习营,我们来看看往期学员的学习状态: 作业看这里~ &nbsp; 助教的作业报告是不是很专业 不交作业打屁屁 助教答疑是不是很用心 &nbsp; 有奖抢答大家玩的很嗨啊 &nbsp; &nbsp; 项目答辩终于开始啦 &nbsp; 优秀者的获奖感言 &nbsp; 这是答辩项目的效果 &nbsp; &nbsp; 这么细致的服务,这么好的氛围,这样的学习效果,需要多少钱呢? 不要1999,不要199,不要99,只要9.9 是的你没听错,只要9.9以上所有就都属于你了 如果你: 1、&nbsp;想学JAVA没有基础 2、&nbsp;想学JAVA没有整块的时间 3、&nbsp;想学JAVA没有足够的预算 还等什么?赶紧报名吧,抓紧抢位,本期只招300人,错过只有等时间待定的下一期了 &nbsp; 报名请加小助手微信:eduxy-1 &nbsp; &nbsp;

Python可以这样学(第一季:Python内功修炼)

董付国系列教材《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》配套视频,讲解Python 3.5.x和3.6.x语法、内置对象用法、选择与循环以及函数设计与使用、lambda表达式用法、字符串与正则表达式应用、面向对象编程、文本文件与二进制文件操作、目录操作与系统运维、异常处理结构。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

Java面试题大全(2020版)

发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environ...

程序员垃圾简历长什么样?

已经连续五年参加大厂校招、社招的技术面试工作,简历看的不下于万份 这篇文章会用实例告诉你,什么是差的程序员简历! 疫情快要结束了,各个公司也都开始春招了,作为即将红遍大江南北的新晋UP主,那当然要为小伙伴们做点事(手动狗头)。 就在公众号里公开征简历,义务帮大家看,并一一点评。《启舰:春招在即,义务帮大家看看简历吧》 一石激起千层浪,三天收到两百多封简历。 花光了两个星期的所有空闲时...

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

HoloLens2开发入门教程

本课程为HoloLens2开发入门教程,讲解部署开发环境,安装VS2019,Unity版本,Windows SDK,创建Unity项目,讲解如何使用MRTK,编辑器模拟手势交互,打包VS工程并编译部署应用到HoloLens上等。

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

MFC一站式终极全套课程包

该套餐共包含从C小白到C++到MFC的全部课程,整套学下来绝对成为一名C++大牛!!!

【数据结构与算法综合实验】欢乐连连看(C++ & MFC)案例

这是武汉理工大学计算机学院数据结构与算法综合实验课程的第三次项目:欢乐连连看(C++ & MFC)迭代开发代码。运行环境:VS2017。已经实现功能:开始游戏、消子、判断胜负、提示、重排、计时、帮助。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

相关热词 c# 局部 截图 页面 c#实现简单的文件管理器 c# where c# 取文件夹路径 c# 对比 当天 c# fir 滤波器 c# 和站 队列 c# txt 去空格 c#移除其他类事件 c# 自动截屏
立即提问