У меня есть объект с
@Entity
public class EcranChamp {
@EmbeddedId
@AttributeOverrides({ @AttributeOverride(name = "id_ecran", column = @Column(name =
"ecran", nullable = false)),
@AttributeOverride(name = "id_champ", column = @Column(name = "champ", nullable = false)) })
EcranChampId id ;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_ecran")
Ecran ecran;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "id_champ")
Champ champ;
//getters & setters
и
@Embeddable
public class EcranChampId implements Serializable {
@Column(name = "id_champ", nullable = false)
private Long id_champ;
@Column(name = "id_ecran", nullable = false)
private Long id_ecran;
Когда я пытаюсь добавить новый EcranChamp
EcranChamp ec = new EcranChamp();
ec.setChamp(c);
ec.setEcran(e);
У меня есть этоошибка
org.hibernate.id.IdentifierGenerationException: пустой идентификатор, сгенерированный для: класса com.kepler.portailclient.domain.model.EcranChamp at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGistenratedI ((java: 107) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.jpa.event.internal.core.JpaPersistEventListener.saveWithGeneratedId (JpaPersistEventListener.java:67) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.event.internal.DefaultPersistEventListener.entityIsTransient (DefaultPersistEventListener.java:189) ~ [hibernate-core-5.2.17.Final.jar:5.2.17.Final] в org.hibernate.event.internal.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:132) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.event.internal.DefaultPersistEventListener.onPersist (DefaultPersistEventListener.java:58) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.internal.SessionImpl.firePersist (SessionImpl.java:783) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Final] в org.hibernate.internal.SessionImpl.persist (SessionImpl.java:768) ~ [hibernate-core-5.2.17.Final.jar: 5.2.17.Окончание] в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161] в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) ~ [na: 1.8.0_161] в sun.reflect.DelegatingMethodinccessII(Неизвестный источник) ~ [na: 1.8.0_161] в java.lang.reflect.Method.invoke (Неизвестный источник) ~ [na: 1.8.0_161] в org.springframework.orm.jpa.ExtendedEntityManagerCreator $ ExtendedEntityManagerInvocationHandler.orvoan (Extended) ().java: 350) ~ [spring-orm-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в com.sun.proxy. $ Proxy453.persist (неизвестный источник) ~ [na: na] в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161] at sun.reflect.NativeMethodAccessorImpl.invoke (Неизвестный источник) ~ [na: 1.8.0_161] в sun.reflect.DelegatingMethodAccessorImpl.invoke (Неизвестный источник) ~ [na: 1.8.0_161] в java.lang.reflect.Method.invoke (Неизвестный источник) ~[na: 1.8.0_161] at org.springframework.orm.jpa.SharedEntityManagerCreator $ SharedEntityManagerInvocationHandler.invoke (SharedEntityManagerCreator.java:305) ~ [spring-orm-5.0.8.RELEASE.jELE: 5.0.8 в версии 5.0.8..sun.proxy. $ Proxy453.persist (Неизвестный источник) ~ [na: na] at org.springframework.data.jpa.repository.support.SimpleJpaRepository.save (SimpleJpaRepository.java:490) ~ [spring-data-jpa-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161] в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) ~ [na:1.8.0_161] на sun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) ~ [na: 1.8.0_161] на java.lang.reflect.Method.invoke (неизвестный источник) ~ [na: 1.8.0_161] на org.springframework.data.repository.core.support.RepositoryComposition $ RepositoryFragments.invoke (RepositoryComposition.java:377) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в org.springframework.data.repository.core.support.RepositoryComposition.invoke (RepositoryComposition.java: 200) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в org.springframework.data.repository.core.support.RepositoryFactorySupport $ ImplementMethodExecutionInterceptor.invoke (RepositoryFactoryJupport.jpport).) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE]в org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.doInvoke (RepositoryFactorySupport.java:593) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.REG.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke (RepositoryFactorySupport.java:578) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.RELEpring или org).framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.59) ~ [spring-data-commons-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction (TransactionAspectSupport.java:294) ~ [spring-tx-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframework.transaction.interceptor.TransactionInterceptor.invoke (TransactionInterceptor.java:98) ~ [весна-tx-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar:5.0.8.RELEASE] в org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke (PersistenceExceptionTranslationInterceptor.java:139) ~ [spring-tx-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframe.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8..invoke (CrudMethodMetadataPostProcessor.java:135) ~ [spring-data-jpa-2.0.9.RELEASE.jar: 2.0.9.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframework.aop.interceptor.ExposeInvocationInterceptor.invojor: Inceptre:[spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke (SurroundingTransactionDetectorMethodInterceptor.java:61) ~ [spring-data-commELE-2.0.9: 2.0.9.R..RELEASE] в org.springframework.aop.framework.ReflectiveMethodInvocation.proceed (ReflectiveMethodInvocation.java:185) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в org.springframea..JdkDynamicAopProxy.invoke (JdkDynamicAopProxy.java:212) ~ [spring-aop-5.0.8.RELEASE.jar: 5.0.8.RELEASE] в com.sun.proxy. $ Proxy457.save (Неизвестный источник) ~ [na:на] вcom.kepler.portailclient.domain.service.GestionEcranServiceImp.ajouterChampEcran (GestionEcranServiceImp.java:64) ~ [классы /: на.93) ~ [classes /: na] в sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) ~ [na: 1.8.0_161] в sun.reflect.NativeMethodAccessorImpl.invoke (неизвестный источник) ~ [na: 1.8.0_161] вsun.reflect.DelegatingMethodAccessorImpl.invoke (неизвестный источник) ~ [na: 1.8.0_161] at java.lang.reflect.Method.invoke (неизвестный источник) ~ [na: 1.8.0_161]