不要在web应用程序spring mvc + jpa + postgreSQL中获取所有用户对象

我使用spring MVC,JPA,postgreSQL开发Web应用程序

这是一些代码:

文件:user.java

@Entity @Table(name = "USER") public class User implements Serializable{ private Long id; private String name; private DateTime birthDate; private String address; private String email; private String phone; private String username; private String password; private boolean isActive; private String lastModifiedPerson; private DateTime createdDate; private DateTime lastModifiedDate; private int version; private Set roles = new HashSet(); private Set entrys = new HashSet(); private Set comments = new HashSet(); @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="ID") public Long getId() { return id; } public void setId(Long id) { this.id = id; } @Column(name="NAME") public String getName() { return name; } public void setName(String name) { this.name = name; } @Column(name="BIRTHDATE") @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") @DateTimeFormat(iso=ISO.DATE) public DateTime getBirthDate() { return birthDate; } public void setBirthDate(DateTime birthDate) { this.birthDate = birthDate; } @Column(name="ADDRESS") public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Column(name="EMAIL") public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } @Column(name="PHONE") public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Column(name="USERNAME") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @Column(name="PASSWORD") public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Column(name="ISACTIVE") public boolean isActive() { return isActive; } public void setActive(boolean isActive) { this.isActive = isActive; } @Column(name="LAST_MODIFIED_BY") public String getLastModifiedPerson() { return lastModifiedPerson; } public void setLastModifiedPerson(String lastModifiedPerson) { this.lastModifiedPerson = lastModifiedPerson; } @Column(name="CREATE_DATE") @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") @DateTimeFormat(iso=ISO.DATE) public DateTime getCreatedDate() { return createdDate; } public void setCreatedDate(DateTime createdDate) { this.createdDate = createdDate; } @Column(name="LAST_MODIFIED_DATE") @Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime") @DateTimeFormat(iso=ISO.DATE) public DateTime getLastModifiedDate() { return lastModifiedDate; } public void setLastModifiedDate(DateTime lastModifiedDate) { this.lastModifiedDate = lastModifiedDate; } @Transient public String getBirthDateString(){ String birthDateString=""; if(birthDate != null) birthDateString = org.joda.time.format.DateTimeFormat .forPattern("yyyy-MM-dd").print(birthDate); return birthDateString; } @Transient public String getLastModifiedDateString(){ String birthDateString=""; if(lastModifiedDate != null) birthDateString = org.joda.time.format.DateTimeFormat .forPattern("yyyy-MM-dd").print(lastModifiedDate); return birthDateString; } @Transient public String getCreateDateString(){ String birthDateString=""; if(createdDate != null) birthDateString = org.joda.time.format.DateTimeFormat .forPattern("yyyy-MM-dd").print(createdDate); return birthDateString; } @ManyToMany @JoinTable(name = "USER_ROLE", joinColumns = @JoinColumn(name="USER_ID"), inverseJoinColumns=@JoinColumn(name="ROLE_ID")) public Set getRoles() { return roles; } public void setRoles(Set roles) { this.roles = roles; } @OneToMany(mappedBy="user", cascade= CascadeType.ALL, orphanRemoval=true) public Set getEntrys() { return entrys; } public void setEntrys(Set entrys) { this.entrys = entrys; } @OneToMany(mappedBy="user", cascade = CascadeType.ALL, orphanRemoval = true) public Set getComments() { return comments; } public void setComments(Set comments) { this.comments = comments; } @Version @Column(name="VERSION") public int getVersion() { return version; } public void setVersion(int version) { this.version = version; } @Override public String toString(){ return "User - Id:" + id +", Name: "+ name +", Username: " + username +", CreatedDate: " + createdDate; } } 

文件:UserRepository.java

 package com.software.booksocial.repository; import org.springframework.data.repository.CrudRepository; import com.software.booksocial.domain.User; public interface UserRepository extends CrudRepository { } 

文件:UserService.java

 package com.software.booksocial.service; import java.util.List; import com.software.booksocial.domain.User; public interface UserService { List findAll(); User findById(Long id); User save(User user); } 

文件:UserServiceIml.java

 package com.software.booksocial.service.jpa; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.software.booksocial.domain.User; import com.software.booksocial.repository.UserRepository; import com.software.booksocial.service.UserService; import com.google.common.collect.Lists; @Repository @Transactional @Service("userService") public class UserServiceIml implements UserService { @Autowired private UserRepository userRepository; @Override @Transactional(readOnly = true) public List findAll(){ return Lists.newArrayList(userRepository.findAll()); } @Override @Transactional(readOnly=true) public User findById(Long id){ return userRepository.findOne(id); } @Override public User save(User user){ return userRepository.save(user); } //@Autowired //public void setUserRepository(UserRepository userRepository){ // this.userRepository = userRepository; //} } 

文件:UserController.java

 package com.software.booksocial.controller; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.software.booksocial.domain.User; import com.software.booksocial.service.UserService; @RequestMapping("/users") @Controller public class UserController { final Logger logger = LoggerFactory.getLogger(UserController.class); @Autowired private UserService userService; @RequestMapping(method = RequestMethod.GET) public String list(Model uiModel){ logger.info("Listing Users"); List users = userService.findAll(); uiModel.addAttribute("users", users); logger.info("No. of users: " + users.size()); return "users/list"; } } 

和图像链接中的数据库结构:

https://dl.dropboxusercontent.com/u/39630113/DBBookSocial.png

https://dl.dropboxusercontent.com/u/39630113/Picture/DBUpdate.png

主要错误:

Hibernate:选择user0_.ID为ID1_8_,user0_.ISACTIVE为ISACTIVE2_8_,user0_.ADDRESS为ADDRESS3_8_,user0_.BIRTHDATE为BIRTHDAT4_8_,user0_.CREATE_DATE为CREATE_D5_8_,user0_.EMAIL为EMAIL6_8_,user0_.LAST_MODIFIED_DATE为LAST_MOD7_8_,user0_.LAST_MODIFIED_BY为LAST_MOD8_8_ ,user0_.NAME为NAME9_8_,user0_.PASSWORD为PASSWOR10_8_,user0_.PHONE为PHONE11_8_,user0_.USERNAME为USERNAM12_8_,user0_.VERSION为VERSION13_8_来自USER user0_ WARN:org.hibernate.engine.jdbc.spi.SqlExceptionHelper – SQL错误: 0,SQLState:42703错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper – 错误:列user0_.id不存在位置:2015年1月27日下午4:37:45 org.apache.catalina.core.StandardWrapperValve在上下文中调用SEVERE:servlet [appServlet]的Servlet.service(),路径[/ readersocial]引发exception[请求处理失败; 嵌套exception是org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSet; SQL [不适用]; 嵌套exception是org.hibernate.exception.SQLGrammarException:无法使用根本原因org.postgresql.util.PSQLException提取ResultSet]:错误:列user0_.id不存在位置:8

和错误文本:

Hibernate:选择user0_.ID为ID1_8_,user0_.ISACTIVE为ISACTIVE2_8_,user0_.ADDRESS为ADDRESS3_8_,user0_.BIRTHDATE为BIRTHDAT4_8_,user0_.CREATE_DATE为CREATE_D5_8_,user0_.EMAIL为EMAIL6_8_,user0_.LAST_MODIFIED_DATE为LAST_MOD7_8_,user0_.LAST_MODIFIED_BY为LAST_MOD8_8_ ,user0_.NAME为NAME9_8_,user0_.PASSWORD为PASSWOR10_8_,user0_.PHONE为PHONE11_8_,user0_.USERNAME为USERNAM12_8_,user0_.VERSION为VERSION13_8_来自USER user0_ WARN:org.hibernate.engine.jdbc.spi.SqlExceptionHelper – SQL错误: 0,SQLState:42703错误:org.hibernate.engine.jdbc.spi.SqlExceptionHelper – 错误:列user0_.id不存在位置:2015年1月27日下午4:37:45 org.apache.catalina.core.StandardWrapperValve在上下文中调用SEVERE:servlet [appServlet]的Servlet.service(),路径[/ readersocial]引发exception[请求处理失败; 嵌套exception是org.springframework.dao.InvalidDataAccessResourceUsageException:无法提取ResultSet; SQL [不适用]; 嵌套exception是org.hibernate.exception.SQLGrammarException:无法使用根本原因org.postgresql.util.PSQLException提取ResultSet]:错误:列user0_.id不存在位置:8 at org.postgresql.core.v3.QueryExecutorImpl。位于org.postgresql的org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1927)的org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)上的receiveErrorResponse(QueryExecutorImpl.java:2198)位于org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:419)的org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:309)atg中的.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:561)。位于org.hibernate.loader.Loader.cuteResultSet(Loader.java:2066)的org.hibernate.loader.Loader.executeQueryStatement(Loader.java:)中的hibernate.engine.jdbc.internal.ResultSetReturnImpl.extract(ResultSetReturnImpl.java:82) 1863)在org.hibernate.loader.Loader.execu org.hibernate.loader.Lad上的org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:355)中的org.hibernate.loader.Loader.doQuery(Loader.java:910)中的teQueryStatement(Loader.java:1839) .doList(Loader.java:2554)org.hibernate.loader(Loader.java:2540)org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2370)org.hibernate.loader上的org.hibernate.loader.Loader.doList(Loader.java:2540)。位于org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:387)的org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:497)中的Loader.list(Loader.java:2365)位于org.hibernate.internal.QueryImpl.list上的org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:236)org.hibernate.internal.SessionImpl.list(SessionImpl.java:1264)中。(QueryImpl .java:103)位于org.hibernate.jpa的org.hibernate.jpa.internal.QueryImpl.list(QueryImpl.java:573)org.hibernate.jpa.internal.QueryImpl.getResultList(QueryImpl.java:449)。 criteria.compile.CriteriaQueryTypeQueryAdapter.getResultList( CriteriaQueryTypeQueryAdapter.java:67)org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java:288)at org.springframework.data.jpa.repository.support.SimpleJpaRepository.findAll(SimpleJpaRepository.java: 62)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)来自org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.executeMethodOn(RepositoryFactorySupport.java:442)org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java: 427)org.springframework.data.repository.core.support.RepositoryFactorySupport $ QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:381)org.springframework.aop.framework.Re。 在org.springframework.data.repository.core.support.RepositoryFactorySupport $ defaultMethodInvokingMethodInterceptor.invoke(RepositoryFactorySupport.java:512)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation。)中的flectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)。 java:179)atg.springframework.dao.support的org.springframework.transaction.intercts.TransactionInterceptor.invoke(TransactionInterceptor.java:110)org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.dao.support位于org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor $。CrudMethodMetadataPopulatingMethodIntercceptor.invoke(CrudMethodMetadataPostProcessor)中的.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:155) .java:111)在org.springframe 在org.springframework.aop.frame.RevlectiveMethodInvocation.proceed(ReflectiveMethodInvocation)的org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)中的work.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)。 java:179)at.com.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:207)at com.sun.proxy。$ Proxy36.findAll(Unknown Source)at com.software.booksocial.service.jpa.UserServiceIml .findAll(UserServiceIml.java:25)at.slsware.booksocial.controller.UserController.list(UserController.java:30)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown)来自)org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)的java.lang.reflect.Method.invoke(未知来源)的sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) org.springframework.web.met 位于org.springframework.web.servlet.mvc的org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)中的hod.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)。方法.annotationMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:781)位于org.springframework.web.servlet.mvc的org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:721)。方法.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)atg.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943)org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966)at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857)at jav 位于org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842)的ax.servlet.http.HttpServlet.service(HttpServlet.java:618),位于javax.servlet.http.HttpServlet.service(HttpServlet.java: 725)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:301)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.apache.tomcat.websocket.server .WsFilter.doFilter(WsFilter.java:52)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at at org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter.doFilterInternal(OpenEntityManagerInViewFilter.java:180)位于org.apache.catalina.core.ApplicationFilterChain的org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)。 org中的internalDoFilter(ApplicationFilterChain.java:239)。 apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77)at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter。 :org.apache。 org.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)中的.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)位于org.apache.catalina.core.Standar的org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) dgtextValve.invoke(StandardContextValve.java:106)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)at org .apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:78)org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve) .java:88)org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:526),位于org.apache.coyote的org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1033)。在Org.apache.coyote.http11.Http11NioProtocol $ Http11ConnectionHandler.process(Http11NioProtocol.java:222)的org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun上的AbstractProtocol $ AbstractConnectionHandler.process(AbstractProtocol.java:652) NioEndpoint.java:1566)org.apache.tomcat.util.net.NioEndpoint $ SocketProces 位于org.apache.tomcat.util.threads的java.util.concurrent.ThreadPoolExecutor $ Worker.run(未知来源)的java.util.concurrent.ThreadPoolExecutor.runWorker(未知来源)的sor.run(NioEndpoint.java:1523) .TaskThread $ WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Unknown Source)

2015年1月27日下午5:00:48 org.apache.catalina.core.StandardContext重新加载信息:重新加载具有名称[/ readersocial]的上下文已于2015年1月27日下午5:00:48开始org.apache.catalina.core。 ApplicationContext log INFO:销毁Spring FrameworkServlet’appServlet’INFO:org.springframework.web.context.support.XmlWebApplicationContext – 关闭命名空间’appServlet-servlet’的WebApplicationContext:启动日期[Tue Jan 27 16:37:28 ICT 2015]; parent:Root WebApplicationContext 2015年1月27日下午5:00:48 org.apache.catalina.core.ApplicationContext日志INFO:关闭Spring根WebApplicationContext INFO:org.springframework.web.context.support.XmlWebApplicationContext – 关闭Root WebApplicationContext:启动日期[Tue Jan 27 16:37:17 ICT 2015]; 上下文层次结构根据2015年1月27日下午5:00:48 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc严重:Web应用程序[/ readersocial]注册了JDBC驱动程序[org.postgresql.Driver]但是在注册时无法取消注册Web应用程序已停止。 为防止内存泄漏,JDBC驱动程序已被强制取消注册。 org.apache.catalina.core.ApplicationContext log INFO:在类路径上检测不到Spring WebApplicationInitializer类型2015年1月27日下午5:00:56 org.apache.catalina.core.ApplicationContext log INFO :初始化Spring根WebApplicationContext INFO:org.springframework.web.context.ContextLoader – Root WebApplicationContext:初始化已启动INFO:org.springframework.web.context.support.XmlWebApplicationContext – 刷新根WebApplicationContext:启动日期[Tue Jan 27 17:00: 56 ICT 2015]; 上下文层次结构的根INFO:org.springframework.beans.factory.xml.XmlBeanDefinitionReader – 从ServletContext资源加载XML bean定义[/WEB-INF/spring/root-context.xml] INFO:org.springframework.beans.factory.xml .XmlBeanDefinitionReader – 从类路径资源[datasource-tx-jpa.xml]加载XML bean定义INFO:org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor – 找到并支持自动assembly的JSR-330’javax.inject.Inject’注释警告:org.hibernate.ejb.HibernatePersistence – HHH015016:遇到了一个弃用的javax.persistence.spi.PersistenceProvider [org.hibernate.ejb.HibernatePersistence]; 请改用[org.hibernate.jpa.HibernatePersistenceProvider]。 INFO:org.springframework.web.context.ContextLoader – Root WebApplicationContext:初始化完成于13934 ms 2015年1月27日下午5:01:10 org.apache.catalina.core.ApplicationContext日志INFO:初始化Spring FrameworkServlet’appServlet’INFO: org.springframework.web.servlet.DispatcherServlet – FrameworkServlet’appServlet’:初始化已启动INFO:org.springframework.web.context.support.XmlWebApplicationContext – 刷新名称空间’appServlet-servlet’的WebApplicationContext:启动日期[Tue Jan 27 17:01 :10 ICT 2015]; parent:Root WebApplicationContext INFO:org.springframework.beans.factory.xml.XmlBeanDefinitionReader – 从ServletContext资源加载XML bean定义[/WEB-INF/spring/appServlet/servlet-context.xml] INFO:org.springframework.beans.factory .annotation.AutowiredAnnotationBeanPostProcessor – 为自动assembly发现并支持JSR-330’javax.inject.Inject’注释INFO:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping – 映射“{[/ users],methods = [ GET],params = [],headers = [],consume = [],produce = [],custom = []}“on public java.lang.String com.software.booksocial.controller.UserController.list(org。 springframework.ui.Model)INFO:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping – 映射“{[/],methods = [GET],params = [],headers = [],consume = [ ],generate = [],custom = []}“on public java.lang.String com.software.booksocial.HomeController.home(java.util.Locale,org.springframework.ui.Model)INFO:org.springframework。我们 b.servlet.mvc.method.annotation.RequestMappingHandlerAdapter – 寻找@ControllerAdvice:名称空间’appServlet-servlet’的WebApplicationContext:启动日期[Tue Jan 27 17:01:10 ICT 2015]; parent:Root WebApplicationContext INFO:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter – 查找@ControllerAdvice:名称空间’appServlet-servlet’的WebApplicationContext:启动日期[Tue Jan 27 17:01:10 ICT 2015] ; parent:Root WebApplicationContext INFO:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping – 映射的URL路径[/ resources / **]到处理程序’org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0’信息:org.springframework .web.servlet.DispatcherServlet – FrameworkServlet’appServlet’:初始化在1486 ms完成2015年1月27日下午5:01:12 org.apache.catalina.core.StandardContext重新加载INFO:重新加载具有名称[/ readersocial]的上下文已完成

我没有使用spring数据jpa从UserController的表USER获取所有用户。 谢谢你的帮助。

user是Postgres中的保留关键字(正如评论中所述),因此您最好的选择是将表重命名为其他内容(如APP_USER )并将实体映射更改为@Table(name = "APP_USER")

如果您不能/不想更改表名,则无论在何处使用它都必须将表名括在双引号中,从@Table(name = " \"USER\"") ,但如果我记得正确这会导致上次我尝试它时出现一些错误,当您查询与User相关的其他实体时(双引号未应用于join语句,但现在可以修复)。

无论如何,请查看此主题以获取更多信息。

bigserial PostgreSQL类型需要8个字节,而你的Java id是一个int原语(32位= 4个字节)。

将您的ID更改为:

 private Long id; @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="ID") public Long getId() { return id; } 

使用包装器总是比使用原语更好,因为Hibernate可以轻松区分瞬态和分离的实体状态 。

对于IDENTIFIER生成器,我认为这只能起作用,因为Hibernate为所有这样的IDENTIFIER生成器分配了一个全局序列。 我建议你切换到SEQUENCE生成器 ,也可能是一个pooled-lo优化器。