[英]Don't get all users object in web application 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<Role> roles = new HashSet<Role>();
private Set<Entry> entrys = new HashSet<Entry>();
private Set<EntryComment> comments = new HashSet<EntryComment>();
@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<Role> getRoles() {
return roles;
}
public void setRoles(Set<Role> roles) {
this.roles = roles;
}
@OneToMany(mappedBy="user", cascade= CascadeType.ALL, orphanRemoval=true)
public Set<Entry> getEntrys() {
return entrys;
}
public void setEntrys(Set<Entry> entrys) {
this.entrys = entrys;
}
@OneToMany(mappedBy="user", cascade = CascadeType.ALL, orphanRemoval = true)
public Set<EntryComment> getComments() {
return comments;
}
public void setComments(Set<EntryComment> 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<User, Long> {
}
文件:UserService.java
package com.software.booksocial.service;
import java.util.List;
import com.software.booksocial.domain.User;
public interface UserService {
List<User> 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<User> 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<User> 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]引發異常[請求處理失敗; 嵌套異常是org.springframework.dao.InvalidDataAccessResourceUsageException:無法提取ResultSet; SQL [不適用]; 嵌套異常是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]引發異常[請求處理失敗; 嵌套異常是org.springframework.dao.InvalidDataAccessResourceUsageException:無法提取ResultSet; SQL [不適用]; 嵌套異常是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)上的receiveErrorResponse(QueryExecutorImpl.java:2198)位於org.postgresql的org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)位於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 tegStatementment(Loader.java:1839)位於org.hibernate.loader.loQuery.Loader.doQuery.doQueryAtoLa上的org.hibernate.loader.doQuery.doQueryAndInitializeNonLazyCollections(Loader.java:355)org.hibernate.loader.doQuery(Loader.java:950) .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)在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.aop.frame.RevlectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)的org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)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)在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 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)中的.WsFilter.doFilter(WsFilter.java:52)位於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。的java:107)處org.springframework.web.filter在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)) .characterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)org.apringframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)at 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) dContextValve.invoke(StandardContextValve.java:106)在org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503)在org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:136)在組織.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)。摘要協議$ AbstractConnectionHandler.process(AbstractProtocol.java:652)org.apache.coyote.http11.Http11NioProtocol $ Http11ConnectionHandler.process(Http11NioProtocol.java:222)at org.apache.tomcat.util.net.NioEndpoint $ SocketProcessor.doRun( NioEndpoint.java:1566)org.apache.tomcat.util.net.NioEndpoint $ SocketProces sor.run(NioEndpoint.java:1523)at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(Unknown Source)at org.apache.tomcat.util.threads .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 log INFO:關閉Spring root 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 :初始化春根WebApplicationContext的信息:org.springframework.web.context.ContextLoader - 根的WebApplicationContext:初始化啟動信息:org.springframework.web.context.support.XmlWebApplicationContext - 清爽根的WebApplicationContext:啟動日期[星期二1月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 - 找到並支持自動裝配的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':初始化啟動信息:org.springframework.web.context.support.XmlWebApplicationContext - 命名空間清新的WebApplicationContext 'appServlet小服務程序':啟動日期[星期二1月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 - 為自動裝配發現並支持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優化器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.