2011-06-07 42 views
3

我开始贡献Java中的一个Play项目,下载代码,创建Play项目,添加库并设置所有我可以创建的数据库。 最后一切似乎是好的,但是当我本地主机上运行:9000我得到这个错误:Playframework:发生JPA错误(无法创建EntityManagerFactory)

JPA error 
@66kcmab39 
Internal Server Error (500) for request GET /favicon.ico 

JPA error 
A JPA error occurred (Unable to build EntityManagerFactory): Unable to get the default Bean Validation factory 
play.exceptions.JPAException: Unable to build EntityManagerFactory 
    at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:227) 
    at play.Play.start(Play.java:427) 
    at play.Play.detectChanges(Play.java:530) 
    at play.Invoker$Invocation.init(Invoker.java:100) 
    at Invocation.HTTP Request(Play!) 
Caused by: org.hibernate.HibernateException: Unable to get the default Bean Validation factory 
at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.java:104) 
at org.hibernate.cfg.AnnotationConfiguration.applyBeanValidationConstraintsOnDDL(AnnotationConfiguration.java:477) 
at org.hibernate.cfg.AnnotationConfiguration.applyConstraintsToDDL(AnnotationConfiguration.java:429) 
at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:403) 
at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206) 
at org.hibernate.ejb.Ejb3Configuration.buildMappings(Ejb3Configuration.java:1459) 
at org.hibernate.ejb.EventListenerConfigurator.configure(EventListenerConfigurator.java:193) 
at org.hibernate.ejb.Ejb3Configuration.configure(Ejb3Configuration.java:1086) 
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890) 
at play.db.jpa.JPAPlugin.onApplicationStart(JPAPlugin.java:225) 
... 4 more 
Caused by: java.lang.reflect.InvocationTargetException 
at org.hibernate.cfg.beanvalidation.BeanValidationActivator.applyDDL(BeanValidationActivator.java:95) 
... 13 more 
Caused by: org.hibernate.HibernateException: Unable to build the default ValidatorFactory 
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:322) 
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.applyDDL(TypeSafeActivator.java:83) 
... 14 more 
Caused by: javax.validation.ValidationException: Unable to find a default provider 
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:264) 
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111) 
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:319) 
... 15 more 

游戏版本:1.1.1
MySQL5的
操作系统Ubuntu的

任何想法可能是错误的?
感谢
kvgr

+0

你的persistence.xml文件位于何处?你能发布它的内容吗? – 2011-06-07 22:43:46

+0

我想通了,问题是缺少Hibernate验证程序库... – kvgr 2011-06-19 13:42:42

+0

如果你已经解决了你自己的问题,你可以通过点击旁边复选标记的大纲来发布你的解决方案作为答案。这让大家都知道,当他们在问题列表中看到问题时,问题就解决了。 – 2011-06-21 23:50:27

回答

2

很好的回答:你需要将Hibernate验证添加到您的应用程序。

0

作为补充,添加验证,添加到您的dependencies.yml

应用依赖

# Application dependencies 

require: 
    - play 
    - org.hibernate -> hibernate-core 3.6.9.Final: 
     force: true 
    - org.hibernate -> hibernate-validator 4.2.0.Final 
2

确保JPA注释(如@Id和@OneToMany)或者是:

(1)紧接在字段上方。

@Id 
public Long id; 

(2)或者,所有立即在领域的getter之上。

private Long id; 

@Id 
public Long getId(){ 
    return id; 
} 

使用组合会导致您看到的错误。

// ERROR 

@Id 
private Long id; 

private List<Child> children; 


public Long getId(){ 
    return id; 
} 

@OneToMany 
public List<Child> getChildren(){ 
    return id; 
} 

注意,一些注释,比如:

@ Constraints.Required

@ Formats.DateTime(图案= “YYYY-MM-DD”)

等...

必须紧靠字段名称之上。你不能把这些放在吸气剂之上。但没关系。

相关问题