0
我正在学习spring-hibernate,并试图让我的web服务工作,但现在我坚持这种情况。我对获取数据的服务工作得很好,但是当我尝试发布此情况发生:@generatedvalue不工作,仍然要求手动分配ID
- 我已经使用@generated值注释
- 试图修饰的它的类型,如:GenerationType.SEQUENCE,身份等(没有的他们要么工作)
到目前为止我最好的猜测,所以这是我的代码
这是我的模型类(的一部分),另一种是典型如电子邮件,电话等它不具有任何关系到另一个表,我的数据库btw只有一个表我使用ms sq l认证服务器
@Entity
@Table(name="Patient")
@SuppressWarnings("serial")
public class Patient implements Serializable {
@Id
@GenericGenerator(name = "guidGenerator", strategy = "guid")
@GeneratedValue(generator= "guidGenerator")
@Column(name = "PatientGUID", columnDefinition="uniqueidentifier")
private String patientGuid;
private String firstName;
private String lastName;
public String getPatientGuid() {
return patientGuid;
}
public void setPatientGuid(String patientGuid) {
this.patientGuid = patientGuid;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
}
编辑:我的HBM文件
<hibernate-mapping package="training.model">
<class name="Patient" table="Patient">
<id name="patientGuid" type="string">
<column name="PatientGUID" />
<generator class="assigned" />
</id>
<property name="practiceGuid" type="string">
<column name="PracticeGUID" sql-type="varchar" length="38" not-null="true" />
</property>
<property name="firstName" type="string">
<column name="FirstName" sql-type="varchar" length="30" not-null="true" />
</property>
<property name="lastName" type="string">
<column name="LastName" sql-type="varchar" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
我的表详细列出我坚信导致该problim是:PatientGUID,它的类型是UNIQUEIDENTIFIER,当我执行我的web服务并要求POST方法发布我的病人我得到一个错误,这是:
IDS这个类必须在调用save()前手动赋值save()
所以,我真的需要帮助,我做错了什么,或者我错过了什么?如果您需要在我的代码任何更多的细节只是发表评论,感谢
编辑:错误消息
Caused by: org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned before calling save(): training.model.Patient
at org.hibernate.id.Assigned.generate(Assigned.java:52)
at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:117)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:206)
at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:55)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:191)
at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:49)
at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)
at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:764)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:756)
at org.hibernate.internal.SessionImpl.save(SessionImpl.java:752)
at training.dao.PatientDaoImpl.savePatient(PatientDaoImpl.java:40)
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:317)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy20.savePatient(Unknown Source)
at training.service.PatientServiceImpl.addPatient(PatientServiceImpl.java:29)
at training.ws.PatientWS.addPatients(PatientWS.java:110)
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.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:180)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96)
我是新来的春季冬眠,我试过了,仍然没有运气。可能是我错过了什么?也许在另一个配置中,如:hibernate.properties或hibernate.cfg.xml。 – 2014-09-11 05:10:46