2014-08-28 212 views
1

我收到了这个错误,我正在打破我的坚果以找到解决方案。Spring Hibernate JPA JSF“无法构建EntityManagerFactory”

p.s. :我是JPA,Spring和Hibernate的总新手。

错误

INFO: 13:44:15,065 INFO Version:41 - HHH000412: Hibernate Core {4.1.8.Final} 
INFO: 13:44:15,067 INFO Environment:239 - HHH000206: hibernate.properties not found 
INFO: 13:44:15,069 INFO Environment:342 - HHH000021: Bytecode provider name: javassistINFO: 13:44:15,123 INFO Ejb3Configuration:527 - HHH000204: Processing PersistenceUnitInfo [ 
name: punit 
...] 
INFO: 13:44:15,387 INFO DefaultListableBeanFactory:444 - Destroying singletons in 

org.s[email protected]2f62ebdb: defining beans [org.springframework.context.annotation.internalConfigurationAnnotationProcessor,org.springframework.context.annotation.internalAutowiredAnnotationProcessor,org.springframework.context.annotation.internalRequiredAnnotationProcessor,org.springframework.context.annotation.internalCommonAnnotationProcessor,org.springframework.context.annotation.internalPersistenceAnnotationProcessor,org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor#0,entityManagerFactory,transactionManager,org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.annotation.AnnotationTransactionAttributeSource#0,org.springframework.transaction.interceptor.TransactionInterceptor#0,org.springframework.transaction.config.internalTransactionAdvisor,dataSource,org.springframework.context.annotation.ConfigurationClassPostProcessor.importAwareProcessor]; root of factory hierarchy 
INFO: 13:44:15,388 ERROR ContextLoader:331 - Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: [PersistenceUnit: punit] Unable to build EntityManagerFactory 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1513) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:521) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:458) 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:293) 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:290) 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191) 
    at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1117) 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:922) 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479) 
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403) 
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) 
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) 
    at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:5362) 
    at com.sun.enterprise.web.WebModule.contextListenerStart(WebModule.java:743) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5898) 
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924) 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:356) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
    at java.lang.Thread.run(Thread.java:744) 
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: punit] 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.createContainerEntityManagerFactory(HibernatePersistence.java:74) 
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:290) 
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:310) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1572) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1510) 
    ... 59 more 
Caused by: org.hibernate.AnnotationException: Cannot find the expected secondary table: no user available for com.koski.pms2.User 
    at org.hibernate.cfg.Ejb3Column.getJoin(Ejb3Column.java:363) 
    at org.hibernate.cfg.Ejb3Column.getTable(Ejb3Column.java:342) 
    at org.hibernate.cfg.annotations.SimpleValueBinder.make(SimpleValueBinder.java:296) 
    at org.hibernate.cfg.annotations.PropertyBinder.makePropertyAndValue(PropertyBinder.java:193) 
    at org.hibernate.cfg.annotations.PropertyBinder.makePropertyValueAndBind(PropertyBinder.java:205) 
    at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:2036) 
    at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:766) 
    at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:685) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3443) 
    at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3397) 
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1341) 
    at org.hibernate.cfg.Configuration.buildSessionFactor 
SEVERE: Startup of context /pms2 failed due to previous errors 
INFO: y(Configuration.java:1737) 
    at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94) 
    at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905) 
    ... 65 more 
SEVERE: Exception during cleanup after start failed 
org.apache.catalina.LifecycleException: Manager has not yet been started 
    at org.apache.catalina.session.StandardManager.stop(StandardManager.java:934) 
    at org.apache.catalina.core.StandardContext.stop(StandardContext.java:6099) 
    at com.sun.enterprise.web.WebModule.stop(WebModule.java:720) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:5916) 
    at com.sun.enterprise.web.WebModule.start(WebModule.java:691) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:1041) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:1024) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2278) 
    at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1924) 
    at com.sun.enterprise.web.WebApplication.start(WebApplication.java:139) 
    at org.glassfish.internal.data.EngineRef.start(EngineRef.java:122) 
    at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:291) 
    at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:352) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:497) 
    at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:219) 
    at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:491) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:527) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2$1.run(CommandRunnerImpl.java:523) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:356) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$2.execute(CommandRunnerImpl.java:522) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:546) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1423) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1500(CommandRunnerImpl.java:108) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1762) 
    at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1674) 
    at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:534) 
    at com.sun.enterprise.v3.admin.AdminAdapter.onMissingResource(AdminAdapter.java:224) 
    at org.glassfish.grizzly.http.server.StaticHttpHandler.service(StaticHttpHandler.java:297) 
    at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:246) 
    at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) 
    at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) 
    at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) 
    at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) 
    at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) 
    at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) 
    at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) 
    at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) 
    at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) 
    at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) 
    at java.lang.Thread.run(Thread.java:744) 

应用上下文

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
    http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool-4.0.xsd"> 

<context:annotation-config/> 
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> 
    <property name="persistenceUnitName" value="punit"/> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true"/> 
      <property name="generateDdl" value="true"/> 
     </bean> 
    </property> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 
      <entry key="hibernate.hbn2ddl.auto" value="update"/> 
      <entry key="hibernate.format_sql" value="true"/> 
     </map> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManager"/> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://192.168.1.3:3305/pms?autoReconnect=true"/> 
    <property name="username" value="pms"/> 
    <property name="password" value="pmspass"/> 
</bean> 

Web.xml中

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
    http://www.springframework.org/schema/tool http://www.springframework.org/schema/tool/spring-tool-4.0.xsd"> 

<context:annotation-config/> 
<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /> 

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
    <property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml" /> 
    <property name="persistenceUnitName" value="punit"/> 
    <property name="dataSource" ref="dataSource"/> 
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="showSql" value="true"/> 
      <property name="generateDdl" value="true"/> 
     </bean> 
    </property> 
    <property name="jpaPropertyMap"> 
     <map> 
      <entry key="hibernate.dialect" value="org.hibernate.dialect.MySQL5InnoDBDialect"/> 
      <entry key="hibernate.hbn2ddl.auto" value="update"/> 
      <entry key="hibernate.format_sql" value="true"/> 
     </map> 
    </property> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory"/> 
</bean> 
<tx:annotation-driven transaction-manager="transactionManager"/> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 
    <property name="url" value="jdbc:mysql://192.168.1.3:3305/pms?autoReconnect=true"/> 
    <property name="username" value="pms"/> 
    <property name="password" value="pmspass"/> 
</bean> 

的persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence_2_0.xsd"> 
    <persistence-unit name="punit"> 

    </persistence-unit> 
</persistence> 

User.Java类

package com.koski.pms2; 


import java.io.Serializable; 

import java.lang.Integer; 
import java.lang.String; 

import javax.persistence.Basic; 
import javax.persistence.Column; 
import javax.persistence.Entity; 
import javax.persistence.GeneratedValue; 
import javax.persistence.GenerationType; 
import javax.persistence.Id; 
import javax.persistence.Table; 


@Entity 
@Table(name="user") 
public class User implements Serializable { 


    @Column(name="phone",table="user",nullable=false,length=35) 
    @Basic 
    private String phone; 


    @Column(name="username",table="user",nullable=false,length=70) 
    @Basic 
    private String username; 


    @Column(name="isactive",table="user",nullable=false) 
    @Basic 
    private boolean isactive; 



    @Column(name="email",table="user",nullable=false,length=55) 
    @Basic 
    private String email; 


    @Column(name="user_id",table="user",nullable=false) 
    @Id 
    @GeneratedValue(strategy=GenerationType.AUTO) 
    private Integer userId; 


    @Column(name="password",table="user",nullable=false,length=70) 
    @Basic 
    private String password; 


    public User(){ 

    } 

    public String getPhone() { 
     return this.phone; 
    } 


    public void setPhone (String phone) { 
     this.phone = phone; 
    } 



    public String getUsername() { 
     return this.username; 
    } 


    public void setUsername (String username) { 
     this.username = username; 
    } 



    public boolean isIsactive() { 
     return this.isactive; 
    } 


    public void setIsactive (boolean isactive) { 
     this.isactive = isactive; 
    } 




    public String getEmail() { 
     return this.email; 
    } 


    public void setEmail (String email) { 
     this.email = email; 
    } 



    public Integer getUserId() { 
     return this.userId; 
    } 


    public void setUserId (Integer userId) { 
     this.userId = userId; 
    } 



    public String getPassword() { 
     return this.password; 
    } 


    public void setPassword (String password) { 
     this.password = password; 
    } 

} 

任何帮助,尽快将不胜感激我有一个最后期限。

+0

鹦鹉Seker的你有什么'User'实体 – 2014-08-28 11:15:42

+0

有一个User.java类让我将它添加到代码。 – 2014-08-28 11:17:35

+0

“找不到预期的辅助表格:没有用户可用于com.koski.pms2.User”是您的问题。检查数据库模式中是否有称为用户的表 – AdityaKeyal 2014-08-28 11:21:54

回答

0

此行是相关的:

Caused by: org.hibernate.AnnotationException: Cannot find the expected secondary table: no user available for com.koski.pms2.User 

这会发生,因为Hibernate试图访问用户表作为辅助表,但它是主要的。

看来,Hibernate希望@Column属性中的表名只适用于映射到辅助表的属性。 (这与错误消息匹配)

尝试从您的类属性中删除表名并应该工作。

EX:

@Column(name="phone",table="user",nullable=false,length=35) 
@Basic 
private String phone; 

应该是:

@Column(name="phone", nullable=false, length=35) 
@Basic 
private String phone; 
+0

非常感谢您的先生,我很高兴您指出了这一点。 table =“user”是这里的问题。 – 2014-08-28 11:34:26

+0

欢迎您! :) – 2014-08-28 11:36:07

0

我想说,你应该避免使用保留字的表名与休眠。当然你可以逃避它,但它可能会在将来引发问题(例如在查询中)。所以最安全的方法是命名表的另一种方式 - 比如用户

@Entity 
@Table(name="users") 
public class User { 
} 
+0

感谢您的建议 – 2014-08-28 11:21:35

+0

我遗憾地没有足够的代表upvote。 – 2014-08-28 11:26:29

+0

也许这是因为这还没有解决我的问题呢? – 2014-08-28 11:30:50

相关问题