Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type.

本文解决了一个关于Java中使用TopLink Essentials框架时遇到的问题,即Entity类中的Date类型字段未指定时间类型,导致预部署失败。通过添加@Temporal注解指定时间类型解决了此问题。

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:615)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:178)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.createFactory(Unknown Source)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.createEntityManagerFactory(Unknown Source)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.J2EEApplication.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.J2EEModule.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.PersistenceContextRef.createEntityManager(Unknown Source)

at com.apusic.deploy.runtime.PersistenceContextRef.getInjectedObject(Unknown Source)

at com.apusic.deploy.runtime.InjectionInfo.inject(Unknown Source)

at com.apusic.deploy.runtime.NamedObject.inject(Unknown Source)

at com.apusic.deploy.runtime.EnvContext.injectResources(Unknown Source)

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

at services.CompanyService_BizObjectImpl_6.findAll(Unknown Source)

at services._CompanyService_BizObjectImpl_6_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._CompanyService_Remote_6_Stub.findAll(Unknown Source)

at services.CompanyService_Proxy_6.findAll(Unknown Source)

at mBeans.IndesBean.getCompanyGridValues(IndesBean.java:40)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

Caused by: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:212)

... 60 more

Caused by: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.exceptions.ValidationException.noTemporalTypeSpecified(ValidationException.java:1200)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.MetadataValidator.throwNoTemporalTypeSpecified(MetadataValidator.java:337)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processTemporal(DirectAccessor.java:306)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processJPAConverters(DirectAccessor.java:230)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processMappingConverter(DirectAccessor.java:272)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.BasicAccessor.processDirectToFieldMapping(BasicAccessor.java:173)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.BasicAccessor.process(BasicAccessor.java:145)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessor(ClassAccessor.java:513)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessorFields(ClassAccessor.java:526)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessors(ClassAccessor.java:552)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.process(ClassAccessor.java:483)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.MetadataProcessor.processAnnotations(MetadataProcessor.java:225)

at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:354)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:584)

... 59 more

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

at services.CompanyService_BizObjectImpl_6.findAll(Unknown Source)

at services._CompanyService_BizObjectImpl_6_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._CompanyService_Remote_6_Stub.findAll(Unknown Source)

at services.CompanyService_Proxy_6.findAll(Unknown Source)

at mBeans.IndesBean.getCompanyGridValues(IndesBean.java:40)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

2011-05-15 00:05:51 严重 [facelets.viewhandler] Error Rendering View[/indes.xhtml]

javax.faces.FacesException: create data provider error!

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:179)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

Caused by: javax.faces.FacesException: javax.ejb.EJBException: 发生系统错误,请查看服务器日志。; nested exception is: 

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:226)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

... 23 more

Caused by: javax.ejb.EJBException: 发生系统错误,请查看服务器日志。; nested exception is: 

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.Container.postInvokeTx(Unknown Source)

at com.apusic.ejb.container.Component.postInvoke(Unknown Source)

at services.CompanyService_BizObjectImpl_6.findAll(Unknown Source)

at services._CompanyService_BizObjectImpl_6_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._CompanyService_Remote_6_Stub.findAll(Unknown Source)

at services.CompanyService_Proxy_6.findAll(Unknown Source)

at mBeans.IndesBean.getCompanyGridValues(IndesBean.java:40)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

... 27 more

Caused by: javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

... 46 more

2011-05-15 00:05:51 信息 [oracle.toplink.essentials.session.file:/E:/opera/.metadata/.plugins/com.apusic.studio.dev/Tables/.explodedEar/ejbJar.jar/-Tables.transaction] property toplink.server.platform.class.name is deprecated, property toplink.target-server should be used instead.

2011-05-15 00:05:51 错误 [apusic.ejb.Tables.DepartmentService] javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:615)

at oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContainerEntityManagerFactory(EntityManagerFactoryProvider.java:178)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.createFactory(Unknown Source)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.createEntityManagerFactory(Unknown Source)

at com.apusic.persistence.manager.PersistenceUnitLoaderImpl.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.J2EEApplication.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.J2EEModule.getEntityManagerFactory(Unknown Source)

at com.apusic.deploy.runtime.PersistenceContextRef.createEntityManager(Unknown Source)

at com.apusic.deploy.runtime.PersistenceContextRef.getInjectedObject(Unknown Source)

at com.apusic.deploy.runtime.InjectionInfo.inject(Unknown Source)

at com.apusic.deploy.runtime.NamedObject.inject(Unknown Source)

at com.apusic.deploy.runtime.EnvContext.injectResources(Unknown Source)

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

at services.DepartmentService_BizObjectImpl_7.findAll(Unknown Source)

at services._DepartmentService_BizObjectImpl_7_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._DepartmentService_Remote_7_Stub.findAll(Unknown Source)

at services.DepartmentService_Proxy_7.findAll(Unknown Source)

at mBeans.IndesBean.getDepartmentGridValues(IndesBean.java:45)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

Caused by: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.exceptions.EntityManagerSetupException.predeployFailed(EntityManagerSetupException.java:212)

... 60 more

Caused by: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at oracle.toplink.essentials.exceptions.ValidationException.noTemporalTypeSpecified(ValidationException.java:1200)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.MetadataValidator.throwNoTemporalTypeSpecified(MetadataValidator.java:337)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processTemporal(DirectAccessor.java:306)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processJPAConverters(DirectAccessor.java:230)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.DirectAccessor.processMappingConverter(DirectAccessor.java:272)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.BasicAccessor.processDirectToFieldMapping(BasicAccessor.java:173)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.BasicAccessor.process(BasicAccessor.java:145)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessor(ClassAccessor.java:513)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessorFields(ClassAccessor.java:526)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.processAccessors(ClassAccessor.java:552)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.accessors.ClassAccessor.process(ClassAccessor.java:483)

at oracle.toplink.essentials.internal.ejb.cmp3.metadata.MetadataProcessor.processAnnotations(MetadataProcessor.java:225)

at oracle.toplink.essentials.ejb.cmp3.persistence.PersistenceUnitProcessor.processORMetadata(PersistenceUnitProcessor.java:354)

at oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy(EntityManagerSetupImpl.java:584)

... 59 more

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

at services.DepartmentService_BizObjectImpl_7.findAll(Unknown Source)

at services._DepartmentService_BizObjectImpl_7_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._DepartmentService_Remote_7_Stub.findAll(Unknown Source)

at services.DepartmentService_Proxy_7.findAll(Unknown Source)

at mBeans.IndesBean.getDepartmentGridValues(IndesBean.java:45)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

2011-05-15 00:05:51 严重 [facelets.viewhandler] Error Rendering View[/indes.xhtml]

javax.faces.FacesException: create data provider error!

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:179)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.loadData(DataProviderHelper.java:59)

at org.operamasks.faces.render.delegate.GridViewDelegate.delegate(GridViewDelegate.java:74)

at org.operamasks.faces.render.delegate.ViewDelegateManager.processViewDelegates(ViewDelegateManager.java:110)

at org.operamasks.faces.facelets.FaceletViewHandlerHook.renderView(FaceletViewHandlerHook.java:282)

at org.operamasks.faces.lifecycle.RenderResponse.execute(RenderResponse.java:70)

at org.operamasks.faces.lifecycle.LifecycleImpl.doPhase(LifecycleImpl.java:135)

at org.operamasks.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:96)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)

at com.apusic.web.container.ServletComponent.service(Unknown Source)

at com.apusic.web.container.ServletFilterWrapper.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.doFilter(Unknown Source)

at org.operamasks.faces.webapp.filter.DefaultSuffixRedirector.doFilter(DefaultSuffixRedirector.java:73)

at com.apusic.web.container.FilterComponent.doFilter(Unknown Source)

at com.apusic.web.container.FilterChainImpl.performFilter(Unknown Source)

at com.apusic.web.container.WebContainer.invoke(Unknown Source)

at com.apusic.web.container.WebContainer.processRequest(Unknown Source)

at com.apusic.web.http.VirtualHost.processRequest(Unknown Source)

at com.apusic.web.http.HttpServer.processRequest(Unknown Source)

at com.apusic.web.http.HttpConnectionHandler.service(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processRequest(Unknown Source)

at com.apusic.web.http.ConnectionHandler.processConnection(Unknown Source)

at com.apusic.web.http.ConnectionHandler.run(Unknown Source)

at com.apusic.util.ThreadPoolImpl$WorkerThread.run(Unknown Source)

Caused by: javax.faces.FacesException: javax.ejb.EJBException: 发生系统错误,请查看服务器日志。; nested exception is: 

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:226)

at org.operamasks.faces.binding.impl.PropertyValueAdapter.getValue(PropertyValueAdapter.java:38)

at org.operamasks.faces.component.GenComponentUtils.getValueFromExpression(GenComponentUtils.java:74)

at org.operamasks.faces.component.grid.UIDataGridBase.getValue(UIDataGridBase.java:305)

at org.operamasks.faces.render.widget.helper.DataProviderHelper.getProvider(DataProviderHelper.java:165)

... 23 more

Caused by: javax.ejb.EJBException: 发生系统错误,请查看服务器日志。; nested exception is: 

javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.Container.postInvokeTx(Unknown Source)

at com.apusic.ejb.container.Component.postInvoke(Unknown Source)

at services.DepartmentService_BizObjectImpl_7.findAll(Unknown Source)

at services._DepartmentService_BizObjectImpl_7_Tie._invoke(Unknown Source)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:637)

at com.sun.corba.se.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:189)

at com.sun.corba.se.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1680)

at com.sun.corba.se.impl.protocol.SharedCDRClientRequestDispatcherImpl.marshalingComplete(SharedCDRClientRequestDispatcherImpl.java:155)

at com.sun.corba.se.impl.protocol.CorbaClientDelegateImpl.invoke(CorbaClientDelegateImpl.java:129)

at org.omg.CORBA.portable.ObjectImpl._invoke(ObjectImpl.java:457)

at services._DepartmentService_Remote_7_Stub.findAll(Unknown Source)

at services.DepartmentService_Proxy_7.findAll(Unknown Source)

at mBeans.IndesBean.getDepartmentGridValues(IndesBean.java:45)

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.operamasks.faces.binding.ModelBean.invokeMethod(ModelBean.java:319)

at org.operamasks.faces.binding.ModelBean.invoke(ModelBean.java:350)

at org.operamasks.faces.binding.impl.PropertyBinding$MethodReader.get(PropertyBinding.java:308)

at org.operamasks.faces.binding.impl.PropertyBinding.getModelValue(PropertyBinding.java:224)

... 27 more

Caused by: javax.ejb.EJBException: Error creating stateless session bean; nested exception is: javax.persistence.PersistenceException: Exception [TOPLINK-28018] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.EntityManagerSetupException

Exception Description: predeploy for PersistenceUnit [Tables] failed.

Internal Exception: Exception [TOPLINK-7212] (Oracle TopLink Essentials - 2.0 (Build b41-beta2 (03/30/2007))): oracle.toplink.essentials.exceptions.ValidationException

Exception Description: The attribute [birthday] from the entity class [class beans.Employee] does not specify a temporal type. A temporal type must be specified for persistent fields or properties of type java.util.Date and java.util.Calendar.

at com.apusic.ejb.container.StatelessContainer.getContext(Unknown Source)

at com.apusic.ejb.container.Component.preInvoke(Unknown Source)

... 46 more

解决方法:出现这个问题就是关于java.util.Date和java.util.Calander,可以指定一个@Temporal(TemporalType.DATE)来解决。
在 JPA 和 Hibernate 中,主键字段(例如 `orderStatus`)通常被视为不可变的标识符,用于唯一标识数据库表中的每一行记录。如果尝试直接更新主键字段,可能会遇到以下问题: 1. **Hibernate 的持久化机制限制**:Hibernate 会将实体对象与数据库中的主键值绑定,以确保一致性。当尝试修改主键时,Hibernate 可能会抛出异常或忽略更新操作,因为这可能导致数据不一致或违反数据库约束[^1]。 2. **数据库设计原则**:从数据库设计的角度来看,主键应保持不变。频繁更改主键值可能会影响索引性能,并可能导致外键约束问题,特别是在存在多个关联表的情况下[^1]。 ### 解决方案 #### 1. 使用非主键字段表示状态 如果 `orderStatus` 实际上是业务状态而非技术性主键,建议将其移出主键字段并作为普通列处理。这样可以在不影响主键完整性的情况下进行更新。 ```java @Entity public class MesPlateStatusEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; // 将 orderStatus 改为普通字段 private String orderStatus; // Getters and Setters } ``` #### 2. 手动执行原生 SQL 更新 如果确实需要更新主键字段(尽管不推荐),可以通过原生 SQL 实现。但需要注意,这种方式绕过了 Hibernate 的缓存和事务管理机制,必须谨慎使用。 ```java @Modifying @Query(value = "UPDATE mes_plate_status SET order_status = ?1 WHERE id = ?2", nativeQuery = true) void updateOrderStatus(String newStatus, Long id); ``` #### 3. 使用复合主键时的特殊情况 如果你使用的是复合主键(即多个字段共同构成主键),可以考虑使用 `@EmbeddedId` 或 `@IdClass` 并实现 `equals()` 和 `hashCode()` 方法来支持主键变更。然而,即使在这种情况下,更新主键仍然不是最佳实践,建议优先考虑是否真的需要将该字段设为主键[^1]。 #### 4. 删除后重新插入 如果业务逻辑允许,可以先删除旧记录,再插入带有新主键的新记录。这种方式虽然有效,但可能带来额外的性能开销,并且在有外键依赖的情况下需格外小心。 ```java mesPlateStatusRepository.deleteById(oldId); MesPlateStatusEntity newEntity = new MesPlateStatusEntity(); newEntity.setId(newId); newEntity.setOrderStatus("NEW_STATUS"); mesPlateStatusRepository.save(newEntity); ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值