<?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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Допустим, есть класс, реализующий некий интерфейсГде лучше писать комментарии к методам: в классе или в интерфейсе, или же и там, и там? Есть...
что обозначает строка Scanner lineScan = new Scanner(line);?