저는 스프링 - 최대 절전 모드를 배우고 있고 웹 서비스 작동을 얻으려고하고 있지만 지금은이 상황에 처해 있습니다. 데이터를 가져 오는 내 서비스는 잘 작동하지만 난 게시 할 때이 조건이 발생 :@generatedvalue가 작동하지 않고 여전히 수동으로 ID를 할당하도록 요청했습니다.
- 을 내가 이미 같은 입력하지의 modif 노력
- @generated 값 주석을 사용 : (전혀 GenerationType.SEQUENCE, IDENTITY 등 그들에게) 중 하나가 작동
지금까지 내 추측은, 그래서 이것은 내 코드
입니다 이것은 내 모델 클래스 (의 일부), 다른 하나는 등의 이메일, 전화, 같은 전형적인 그리고 그것은 해달라고입니다 다른 테이블에 대한 관계, 오직 내 DB에 1 테이블을 사용 btw 내가 사용하는 석사 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하고 난 내 웹 서비스를 실행할 때의 유형은 고유 식별자입니다 POST 메서드를 요청하여 환자에게 오류가 발생했습니다 :
이 클래스는 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과 같은 또 다른 설정에서. –