I need help. I began studing Spring JPA. I do not understand what I'm doing wrong. I have ERROR. Who can help me? [требует правки]

325
19 августа 2017, 00:32
<?xml version="1.0" encoding="UTF-8"?>
<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>com.HibernateAnnotationMapping</groupId>
    <artifactId>HibernateAnnotationMappingSpring</artifactId>
    <version>1.0-SNAPSHOT</version>
    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-jpa</artifactId>
            <version>1.11.1.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>6.0.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.2.10.Final</version>
        </dependency>
    </dependencies>
</project>



    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
           xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:jpa="http://www.springframework.org/schema/data/jpa"
           xsi:schemaLocation="
                   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
                   http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">
    <!--Directory to scan for repository classes-->
    <jpa:repositories base-package="repository" />
    <bean id="dataSource"
          class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName">
        <value>com.mysql.jdbc.Driver</value>
    </property>
    <property name="url">
        <value>jdbc:mysql://localhost:3306/spring</value>
    </property>
    <property name="username">
        <value>root</value>
    </property>
    <property name="password">
        <value>root</value>
    </property>
    </bean>
    <bean id="entityManagerFactory"
          class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="persistenceUnitName" value="jpaData" />
    <property name="jpaVendorAdapter">
        <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
    </property>
    <property name="jpaProperties">
        <props>
                <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
                <prop key="hibernate.show_sql">true</prop>
                <prop key="hibernate.format_sql">false</prop>
                <prop key="hibernate.hbm2ddl.auto">create</prop>
        </props>
    </property>
    </bean>
        <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
            <property name="entityManagerFactory" ref="entityManagerFactory"/>
        </bean>
    </beans>

    package entity;
    /**
     * Created by poryvai on 16.08.2017.
     */
    import javax.persistence.*;
    import java.io.Serializable;
    @Entity
    @Table(name = "address")
    public class Address implements Serializable{
        private static final long serialVersionUID = -3276852226295894319L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        private long id;
        @Column(name = "COUNTRY")
        private String country;
        @Column(name = "CITY")
        private String city;
        @Column(name = "STREET")
        private String street;
        @Column(name = "POST_CODE", length = 10)
        private String postCode;
        public Address() {
        }
        public Long getId() {
            return id;
        }
        public void setId(Long id) {
            this.id = id;
        }
        public String getCountry() {
            return country;
        }
        public void setCountry(String country) {
            this.country = country;
        }
        public String getCity() {
            return city;
        }
        public void setCity(String city) {
            this.city = city;
        }
        public String getStreet() {
            return street;
        }
        public void setStreet(String street) {
            this.street = street;
        }
        public String getPostCode() {
            return postCode;
        }
        public void setPostCode(String postCode) {
            this.postCode = postCode;
        }
        @Override
        public String toString() {
            return "Address{" +
                    "id=" + id +
                    ", country='" + country + '\'' +
                    ", city='" + city + '\'' +
                    ", street='" + street + '\'' +
                    ", postCode='" + postCode + '\'' +
                    '}';
        }
    }




package entity;
/**
 * Created by poryvai on 16.08.2017.
 */
import javax.persistence.*;
import java.io.Serializable;
import java.sql.Date;
import java.util.*;
@Entity
@Table(name = "employee")
public class Employee implements Serializable {
    private static final long serialVersionUID = -7544538017359643203L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "FIRST_NAME")
    private String firstName;
    @Column(name = "LAST_NAME")
    private String lastName;
    @Column(name = "BIRTHDAY")
    private Date birthday;
    @OneToOne(cascade = CascadeType.ALL)
    private Address address;
    @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinTable(
            name = "EMPL_PROJ",
            joinColumns = @JoinColumn(name = "EMPLOYEE_ID"),
            inverseJoinColumns = @JoinColumn(name = "PROJECT_ID")
    )
    private Set<Project> projects;
    public Employee() {
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastName() {
        return lastName;
    }
    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }
    public Set<Project> getProjects() {
        return projects;
    }
    public void setProjects(Set<Project> projects) {
        this.projects = projects;
    }
    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", firstName='" + firstName + '\'' +
                ", lastName='" + lastName + '\'' +
                ", birthday=" + birthday +
                ", address=" + address +
                '}';
    }
}



package entity;
import javax.persistence.*;
import java.io.Serializable;
import java.util.*;
/**
 * Created by poryvai on 16.08.2017.
 */
@Entity
@Table(name = "project")
public class Project implements Serializable{
    private static final long serialVersionUID = 1796556740932985128L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    @Column(name = "TITLE")
    private String title;
    @ManyToMany(mappedBy = "projects")
    private Set<Employee>  employees;
    public Project() {
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public Set<Employee> getEmployees() {
        return employees;
    }
    public void setEmployees(Set<Employee> employees) {
        this.employees = employees;
    }
    @Override
    public String toString() {
        return "Project{" +
                "id=" + id +
                ", title='" + title + '\'' +
                '}';
    }
}


    package repository;
    import entity.Address;
    import org.springframework.data.jpa.repository.JpaRepository;
    import org.springframework.stereotype.Repository;
    /**
     * Created by poryvai on 16.08.2017.
     */
    @Repository
    public interface AddressRepository extends JpaRepository<Address, Long> {
    }



package repository;
import org.springframework.data.jpa.repository.JpaRepository;
import entity.Employee;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Repository;
    /**
     * Created by poryvai on 16.08.2017.
     */
    @Repository
    public interface EmployeeRepository extends JpaRepository<Employee, Long> {
        @Query(value="SELECT * FROM employee WHERE FIRST_NAME=?1 AND LAST_NAME=?2", nativeQuery = true)
        Employee findByFirstNameAndLastName(String firstName, String lastName);
        Employee findByLastName(String lastName);
    }


    package repository;
    import org.springframework.data.jpa.repository.JpaRepository;
    import entity.Project;
    import org.springframework.stereotype.Repository;
    /**
     * Created by poryvai on 16.08.2017.
     */
    @Repository
    public interface ProjectRepository extends JpaRepository<Project, Long> {
    }





package domain;
import entity.Address;
import entity.Employee;
import entity.Project;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import repository.AddressRepository;
import repository.EmployeeRepository;
import repository.ProjectRepository;
    import java.sql.Date;
    import java.sql.SQLException;
    import java.util.Calendar;
    import java.util.HashSet;
    import java.util.List;
    import java.util.Set;

    /**
     * Created by poryvai on 16.08.2017.
     */
    public class Domain {
        public static void main(String[] args) throws SQLException{
            ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
            AddressRepository addressRepository = context.getBean(AddressRepository.class);
            EmployeeRepository employeeRepository = context.getBean(EmployeeRepository.class);
            ProjectRepository projectRepository = context.getBean(ProjectRepository.class);
            Address address = new Address();
            address.setId(1L);
            address.setCountry("DC");
            address.setCity("Gotham city");
            address.setStreet("Arkham street");
            address.setPostCode("12345");
            Project project = new Project();
            project.setId(1L);
            project.setTitle("Gotham PD");
            Employee employee = new Employee();
            employee.setId(1L);
            employee.setFirstName("James");
            employee.setLastName("Gordon");
            Calendar calendar = Calendar.getInstance();
            calendar.set(1939, Calendar.MAY,1);
            employee.setBirthday(new Date(calendar.getTime().getTime()));
            employee.setAddress(address);
            Set<Employee> employees = new HashSet<Employee>();
            employees.add(employee);
            project.setEmployees(employees);
            Set<Project> projects = new HashSet<Project>();
            projects.add(project);
            employee.setProjects(projects);
            addressRepository.save(address);
            employeeRepository.save(employee);
            projectRepository.save(project);
            List<Employee> employeeList = employeeRepository.findAll();
            for(Employee e: employeeList){
                System.out.println(e);
            }
            Employee employee1 = employeeRepository.findOne(1L);

            System.out.println(employeeRepository.findByFirstNameAndLastName("James","Gordon"));
            System.out.println(employeeRepository.findByLastName("Gordon"));
        }
    }



    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: No persistence unit with name 'jpaData' found
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
        at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
        at domain.Domain.main(Domain.java:24)
    Caused by: java.lang.IllegalArgumentException: No persistence unit with name 'jpaData' found
        at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:699)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:372)
        at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:329)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370)
        at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
        ... 12 more
Process finished with exit code 1
READ ALSO
Комментирование методов

Комментирование методов

Допустим, есть класс, реализующий некий интерфейсГде лучше писать комментарии к методам: в классе или в интерфейсе, или же и там, и там? Есть...

229
Изменить формат вывода даты

Изменить формат вывода даты

Есть объект на java, в котором есть поле типа javautil

203
Помогите разобраться со Scanner в Java

Помогите разобраться со Scanner в Java

что обозначает строка Scanner lineScan = new Scanner(line);?

345
Вставить класс из другого файла

Вставить класс из другого файла

Есть 2 java файлаВ первом имеется публичный класс Selected

185