使用jpa(EclipseLink)和Spring DAO模型插入用户数据

时间:2017-04-10 21:23:13

标签: maven spring-mvc jpa eclipselink

Hello everyBody请帮助我,我真的迷失了。我是初学者,JPA和spring.i试图使用dao模型和JPA(EclipseLink)将用户插入数据库,但是很多错误。 我收到了一个错误,

 package com.model;

 import java.io.Serializable;
 import javax.persistence.*;


/**
* The persistent class for the users database table.
* 
*/
@Entity
@Table(name="users")
@NamedQuery(name="User.findAll", query="SELECT u FROM User u")
public class User implements Serializable {
private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long userid;
@Column
private String email;
@Column
private String firstname;
@Column
private String lastname;
public User() {
}

public Long getUserid() {
    return this.userid;
}

public void setUserid(Long userid) {
    this.userid = userid;
}

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

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

public String getFirstname() {
    return this.firstname;
}

public void setFirstname(String firstname) {
    this.firstname = firstname;
}

public String getLastname() {
    return this.lastname;
 }

    public void setLastname(String lastname) {
    this.lastname = lastname;
 }

 }

我认为配置中有很多错误,请帮助。

 package com.dao;

 import com.model.User;

 public interface UserDaoInter {
  public void add(User user);
         }
   package com.dao;

    import javax.persistence.EntityManager;
   import javax.persistence.PersistenceContext;

   import org.springframework.transaction.annotation.Transactional;

  import com.model.User;


  public class UserDaoImpl implements UserDaoInter {
 @PersistenceContext private EntityManager em;
    @Transactional
    @Override
    public void add(User user) {

        em.persist(user);

       }
         }
   package com.service;

   import com.model.User;

  public interface UserServiceDao {
  public void add(User user);
    }
   package com.service;

   import org.springframework.beans.factory.annotation.Autowired;
   import org.springframework.stereotype.Service;
   import org.springframework.transaction.annotation.Transactional;

  import com.dao.UserDaoInter;
  import com.model.User;
  @Service
  @Transactional 
  public class UserServiceDaoImpl implements UserServiceDao {
  @Autowired

  UserDaoInter userd;
  @Override
  @Transactional
  public void add(User user) {
  userd.add(user);
    }
    }
  package com.controller;

 import org.springframework.beans.factory.annotation.Autowired;
  import org.springframework.stereotype.Controller;
  import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

import com.model.User;
import com.service.UserServiceDao;

  @Controller
  public class UserContoroller {

   @Autowired
   private UserServiceDao service;
  @RequestMapping(value = "/", method = RequestMethod.GET)
   public ModelAndView newContact(ModelAndView model) {
    User user1 = new User();
    model.addObject("userr", user1);
    model.setViewName("UserForm");
    return model;
}
@RequestMapping(value = "/saveUser", method = RequestMethod.POST)
public ModelAndView saveEmployee(@ModelAttribute User user) {
    if (user.getUserid() == 0) { 
        service.add(user);
    } 
    return new ModelAndView("profile");
}
  }
      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
  http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
   <display-name>project1</display-name>
   <context-param>
  <param-name>contextConfigLocation</param-name>
   <param-value>/WEB-INF/beans.xml</param-value>
  </context-param>
 <listener>
  <listener-
      class>org.springframework.web.context.ContextLoaderListener</listener-
   class>
   </listener>
   <servlet>
   <servlet-name>spring</servlet-name>
    <servlet-class>
        org.springframework.web.servlet.DispatcherServlet
    </servlet-class>
    <load-on-startup>1</load-on-startup>
   </servlet>
  <servlet-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>/</url-pattern>
    </servlet-mapping>
    </web-app>

WEB.XML

    <?xml version="1.0" encoding="UTF-8"?>
   <beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans 
 http://www.springframework.org/schema/beans/spring-beans.xsd
 http://www.springframework.org/schema/tx 
 http://www.springframework.org/schema/tx/spring-tx.xsd
 http://www.springframework.org/schema/context 
 http://www.springframework.org/schema/context/spring-context.xsd
 ">

   <!-- Enable the component scan (auto wiring etc) for the following 
    package -->
    <context:component-scan base-package="pfe.*" />

   <!-- Make sure the following is specified to enable transaction  -->
   <tx:annotation-driven />
   <bean class="org.springframework.orm.jpa.JpaTransactionManager" 
    id="transactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    <bean


  class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/" />
    <property name="suffix" value=".jsp" />
    </bean>


     <bean id='entityManagerFactory' 
  class=
        'org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean' 
     >
     <property name="persistenceUnitName" value="spring-jpa-test"/>
     <property name='dataSource' ref='dataSource' />
      <property name="jpaPropertyMap">
      <map>
      <entry key="eclipselink.weaving" value="false"/>
    </map>
    </property>
    </bean>
    <bean id='dataSource' 
     class='org.springframework.jdbc.datasource.DriverManagerDataSource'>
     <property name='driverClassName' value='Org.Postgresql.Driver' />
      <property name='url' value='jdbc:postgresql://localhost:5432/UserDB'/>
     <property name='username' value='postgres' />
    <property name='password' value='04011993' />
       </bean>

bean.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/persistence_2_0.xsd">
     <persistence-unit name="project1">
        <provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
    <class>com.model.User</class>
</persistence-unit>

persitence.xml

    <project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
   http://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>project1</groupId>
     <artifactId>project1</artifactId>
      <version>0.0.1-SNAPSHOT</version>
       <packaging>war</packaging>
       <dependencies>
         <dependency>
           <groupId>org.apache.tomcat</groupId>
           <artifactId>tomcat-annotations-api</artifactId>
              <version>8.0.32</version>
           </dependency>
          <dependency>
      <groupId>org.apache.tomcat</groupId>
     <artifactId>tomcat-catalina-ant</artifactId>
       <version>8.0.32</version>
       </dependency>  
        <dependency>
            <groupId>org.apache.tomcat</groupId>
           <artifactId>tomcat-catalina-ha</artifactId>
           <version>8.0.32</version>
         </dependency>
           <dependency>
           <groupId>org.apache.tomcat</groupId>
           <artifactId>tomcat-storeconfig</artifactId>
            <version>8.0.32</version>
            </dependency>
           <dependency>
               <groupId>org.apache.tomcat</groupId>
                <artifactId>tomcat-tribes</artifactId>
                 <version>8.0.32</version>
             </dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-catalina</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.eclipse.jdt.core.compiler</groupId>
  <artifactId>ecj</artifactId>
  <version>4.4.2</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-el-api</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jasper-el</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jasper</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jsp-api</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-servlet-api</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-api</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-coyote</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-dbcp</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-i18n-es</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-i18n-fr</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-i18n-ja</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jdbc</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-jni</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-util-scan</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-util</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-websocket</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
  <groupId>org.apache.tomcat</groupId>
  <artifactId>tomcat-websocket-api</artifactId>
  <version>8.0.32</version>
</dependency>
<dependency>
        <groupId>org.eclipse.persistence</groupId>
        <artifactId>eclipselink</artifactId>
        <version>2.5.0-RC1</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.persistence</groupId>
                <artifactId>commonj.sdo</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>persistence-api</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>9.4-1200-jdbc41</version>
    </dependency>
    <dependency>
   <groupId>javax.transaction</groupId>
   <artifactId>jta</artifactId>
      <version>1.1</version>
     </dependency>
       <dependency>
      <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
      </dependency>
        <dependency>
       <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
      <version>2.1</version>
         <scope>provided</scope>
       </dependency>
      <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
         <version>3.0.5.RELEASE</version>
        </dependency>
        <dependency>
         <groupId>org.springframework</groupId>
        <artifactId>spring-tx</artifactId>
      <version>3.0.5.RELEASE</version>
     </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
     <artifactId>spring-orm</artifactId>
     <version>3.0.5.RELEASE</version>
      </dependency>
 </dependencies>
   <build>
    <sourceDirectory>src</sourceDirectory>
    <resources>
           <resource>
    <directory>src</directory>
    <excludes>
      <exclude>**/*.java</exclude>
      </excludes>
     </resource>
    </resources>
   <plugins>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
      <source>1.7</source>
      <target>1.7</target>
    </configuration>
  </plugin>
  <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
      <warSourceDirectory>WebContent</warSourceDirectory>
    </configuration>
  </plugin>
</plugins>

的pom.xml

    <%@ page language="java" contentType="text/html; charset=UTF-8"
     pageEncoding="UTF-8"%>
   <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
   <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
  <html>
 </head>
 <style>
    input, select {
  width: 150%;
   padding: 12px 20px;
   margin: 0px 0;
   display: inline-block;
   border: 1px solid #ccc;
   border-radius: 4px;
    box-sizing: border-box;
     }

    input[type=submit] {
      width: 100%;
        background-color: #4CAF50;
        color: white;
      padding: 14px 20px;
       margin: 8px 0;
    border: none;
    border-radius: 4px;
    cursor: pointer;
       font-size: 30px;
        font-weight: bold;
     }

     input[type=submit]:hover {
       background-color: #45a049;
    }

   div {
   position:fixed;
   right:460px;
   top:110px;
   width:570px;
  border-radius: 5px;
   background-color: #afafaa;
 }
 .panelCréerCompte{
  position:fixed;
 border-radius:5px;
 right:460px;
 top:20px;
 width:570px;
 text-align: center;
 background-color: #5F9EA0;
    }
 h2 {
  font-size: 200%;
  }
  h1{
   font-size:150%;


 }

  </style>
  <body>
   <div align="center">
    <form:form action="saveUser" method="post" modelAttribute="userr">
    <table>
        <form:hidden path="id"/>
        <tr>
            <td><h1>email:</h1></td>
            <td><form:input path="name" type="text"  /></td>
        </tr>
        <tr>
            <td><h1>name:</h1></td>
            <td><form:input path="surname"  type="text" /></td>
        </tr>
        <tr>
            <td><h1>usernamee</h1></td>
            <td><form:input path="password" type="password" /></td>
        </tr>


                  <tr>
            <td colspan="2" align="center"><input type="submit" 
      value="save"></td>
        </tr>
    </table>
    </form:form>
    </div>

   </body>
   </html>

adduser.jsp

streambuf

1 个答案:

答案 0 :(得分:0)

错误表明找不到spring-jpa-test持久单位,应该在persistent.xml中定义。如果您检查您的persistent.xml,您会看到该单位被称为project1。所以你只需要重命名它。