当我尝试使用JPA使用hibernate进行bean验证时,会发生以下异常:
Exception in thread "main" javax.persistence.PersistenceException: [PersistenceUnit: Chapter11] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:915)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createEntityManagerFactory(HibernatePersistence.java:57)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:63)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at example.test.Test.main(Test.java:18)
Caused by: org.hibernate.HibernateException: Error applying BeanValidation relational constraints
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:219)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.integrate(BeanValidationIntegrator.java:126)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:306)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1744)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
... 5 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.hibernate.cfg.beanvalidation.BeanValidationIntegrator.applyRelationalConstraints(BeanValidationIntegrator.java:208)
... 10 more
Caused by: java.lang.NoClassDefFoundError: javax/validation/ParameterNameProvider
at org.hibernate.validator.HibernateValidator.createGenericConfiguration(HibernateValidator.java:41)
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:269)
at javax.validation.Validation.buildDefaultValidatorFactory(Validation.java:111)
at org.hibernate.cfg.beanvalidation.TypeSafeActivator.getValidatorFactory(TypeSafeActivator.java:521)
at …Run Code Online (Sandbox Code Playgroud) 我读过很多与Tomcat和Java运行时相关的文章和帖子.我很困惑,需要帮助.任何人都可以清楚我对Tomcat是否需要JDK或JRE的疑问?
提前致谢.
我是Java EE/EJB的新手,我一直在阅读有关Java EE容器的很多东西.我有使用Web容器的经验(jboss中的WAR文件).我也知道Jboss也可以用作Java EE容器.
我的问题是,Java EE容器与Web容器之间有什么区别?
我知道Java EE也能够包含.war文件.它们是不同的,它们的区别是什么?是否有任何偏好供应商具体明智哪个更好?
这就是我的WebFilter样子
@WebFilter("/rest/*")
public class AuthTokenValidatorFilter implements Filter {
@Override
public void init(final FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
final Enumeration<String> attributeNames = servletRequest.getAttributeNames();
while (attributeNames.hasMoreElements()) {
System.out.println("{attribute} " + servletRequest.getParameter(attributeNames.nextElement()));
}
final Enumeration<String> parameterNames = servletRequest.getParameterNames();
while (parameterNames.hasMoreElements()) {
System.out.println("{parameter} " + servletRequest.getParameter(parameterNames.nextElement()));
}
filterChain.doFilter(servletRequest, servletResponse);
}
@Override
public void destroy() {
}
}
Run Code Online (Sandbox Code Playgroud)
我试图在网上找到如何获得HTTP headers来自请求的价值.
我没有找到任何东西,所以我试图枚举servletRequest.getAttributeNames()和servletRequest.getParameterNames() …
它们是不同的还是可以互换使用?如果它们不同,那么是什么使它们彼此不同?
我已经阅读了很多次关于java容器的信息,比如servlet容器,但是,我似乎无法找到容器在企业级Java世界中的定义.
有谁知道企业java容器的良好定义?
Forward():这可以通过Request&ServeletContext以两种方式完成.将servlet中的请求转发到服务器上的另一个资源(servlet,JSP文件或HTML文件).转发是在服务器端完成的,没有客户端的知识.
当您调用转发请求时,请求将被发送到服务器上的另一个资源,而不会通知客户端其他资源将处理该请求.此过程完全在Web容器中进行.
只是
include:将在我们当前的文件中包含另一个文件
forward:将当前请求转发到转发页面
我已经阅读了关于CDI中@Produces注释的内容,但我不明白它的用法.
public class Resources {
// Expose an entity manager using the resource producer pattern
@SuppressWarnings("unused")
@PersistenceContext
@Produces
private EntityManager em; //
@Produces
Logger getLogger(InjectionPoint ip) { //
String category = ip.getMember()
.getDeclaringClass()
.getName();
return Logger.getLogger(category);
}
@Produces
FacesContext getFacesContext() { //
return FacesContext.getCurrentInstance();
}
Run Code Online (Sandbox Code Playgroud)
}
取自:http: //www.jboss.org/jdf/quickstarts/jboss-as-quickstart/guide/GreeterQuickstart/#GreeterQuickstart-
容器如何知道调用生产者方法?如果我注入一个EntityManager,容器如何调用@produces EntityManager?如何调用getLogger生成器方法?
我也没有看到解决所有麻烦的原因.
我正在使用JPA(Hibernate的实现)来注释实体类以持久化到关系数据库(MySQL或SQL Server).是否有一种简单的方法可以从带注释的类中自动生成数据库模式(表创建脚本)?
我仍处于原型设计阶段,预计会频繁更改架构.我希望能够从带注释的代码中指定和更改数据模型.Grails类似于它从域类生成数据库.
作为Java新手,我想知道:在世界上所有语言中,为什么Java经常用于企业应用程序?是什么让它与其他语言相比?它会在未来几年继续这样吗?
我很感激你的见解.提前致谢 :)