簡體   English   中英

不要在web應用程序spring mvc + jpa + postgreSQL中獲取所有用戶對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM