我與JPA ManyToOne關係有問題。我有兩個實體(HikeList,用戶):JPA - 多對一關係不起作用
@Entity
@Table(name = "T_HIKELIST")
public class Hikelist implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private long id;
@Size(min = 1, max = 50)
@ManyToOne(optional = false)
@JoinColumn(name = "login", referencedColumnName = "login")
private User user;
...
}
而且
@Entity
@Table(name = "T_USER")
public class User implements Serializable {
@NotNull
@Size(min = 0, max = 50)
@Id
private String login;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
private Collection<Hikelist> hikeListCollection;
...
}
我的測試類:
...
@Test
public void testCreateUser() {
User user = new User();
user.setLogin("thomaslogin");
user.setEmail("[email protected]");
user.setPassword("thomas");
user.setFirstName("thomas");
user.setLastName("thomas");
userService.createUser(user);
Hikelist hike = new Hikelist();
hike.setId(new Long(1L));
hike.setLabel("GR20");
hike.setUser(user);
hikeService.createHikeList(hike);
Hikelist hike1 = hikeRepository.findOne(new Long(1L));
assertNotNull(hike1);
}
我m到處當我打電話是以下錯誤:hikeService.createHikeList (遠足);
有人知道我錯了嗎? 預先感謝您。
org.springframework.transaction.TransactionSystemException:不能 提交JPA事務;嵌套的異常是 javax.persistence.RollbackException:錯誤而在 org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit犯在 org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:524)的 交易 (AbstractPlatformTransactionManager.java:757) 在 org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:726) 在 org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:478) 在 org.springframework.transaction.interceptor.T ransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:272) 在 org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:95) 在 org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java: 179) 在 org.springframework.aop.framework.CglibAopProxy $ DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:644) 在 com.breizh.packlight.service.HikelistService $$ EnhancerBySpringCGLIB $$ 38379214.createHikeList() 在 COM .breizh.packlight.service.HikelistServiceTest.testCreateUser(HikelistServiceTest.java:60) at sun.reflect.NativeMethodAccessorI mpl.invoke0(本機方法)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在java.lang.reflect.Method中。 invoke(Method.java:606)at org.junit.runners.model.FrameworkMethod $ 1.runReflectiveCall(FrameworkMethod.java:47) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java: 12) 在 org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44) 在 org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17) 在 org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:74) 在 org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:83) 在 org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat。的java:72) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:232) 在 org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:89) at org.junit.runners.ParentRunner $ 3.run(ParentRunner.java:238)at org.junit.runners.ParentRunner $ 1.schedule(ParentRunner.java:63)at org.junit.runners.ParentRunner.runChildren( org.junit.runners.ParentRunner.access $ 000(ParentRunner.java:53)at org.junit.runners.ParentRunner $ 2.evaluate(ParentRunner.java:229)at org.springframework。 test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallb ack.java:61) at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:71) at org.junit.runners.ParentRunner.run(ParentRunner.java:309)at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:175) 在 org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) 在 有機.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) 在 有機.eclipse.jdt.internal.junit .runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) 在 org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) 在 org.eclipse.jdt.internal.junit .runner.RemoteTestRunner.main(RemoteTestRunner.java:197) 引起:javax.persistence.RollbackException:錯誤而提交 在 org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:94)交易 在 org.springframework.orm.jpa.JpaTransactionManager.doCommit(JpaTransactionManager.java:515) ... 37更多原因:javax.validation.UnexpectedTypeException: HV000030:找不到類型驗證程序: com.breizh.packlight.domain.User。在 org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.verifyResolveWasUnique(ConstraintValidatorManager.java:218) 在 org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.findMatchingValidatorClass(ConstraintValidatorManager.java:193) 在 org.hibernate.validator.internal.engine.constraintvalidation.ConstraintValidatorManager.getInitializedValidator(ConstraintValidatorManager.java:97) 在 org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:125) 在 org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.validateConstraints(ConstraintTree.java:91) 在 org.hibernate.validator.internal.metadata.core.MetaConstraint.validateConstraint(MetaConstraint.java:85) 在 org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraint(ValidatorImpl.java:478) 在 org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForDefaultGroup(ValidatorImpl.java:424) 在 org.hibernate.validator.internal.engine.ValidatorImpl.validateConstraintsForCurrentGroup(ValidatorImpl.java:388) 在 org.hibernate作爲.validator.internal.engine.ValidatorImpl.validateInContext(ValidatorImpl.java:340) at org.hibernate.validator.internal。engine.ValidatorImpl.validate(ValidatorImpl.java:158) 在 org.hibernate.cfg.beanvalidation.BeanValidationEventListener.validate(BeanValidationEventListener.java:137) 在 org.hibernate.cfg.beanvalidation.BeanValidationEventListener.onPreInsert(BeanValidationEventListener。的java:95) 在 org.hibernate.action.internal.EntityInsertAction.preInsert(EntityInsertAction.java:206) 在 org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:96) 在 有機.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:453) 在 org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:345) 在 org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350) 在 org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56) 在org.hibernate.internal。 SessionImpl.flush(SessionImpl.java:1218) 在 org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:421) 在 org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction。的java:101) 在 org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:177) 在 org.hibernate.jpa.internal.TransactionImpl.commit(TransactionImpl.java:77) ...... 38多個
我不停地一遍又一遍讀我的代碼找到一個空的錯誤,但沒有找到it.Thanks很多關於打開我的眼睛... – user1260928