Advertisement
Guest User

Untitled

a guest
Aug 17th, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.67 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6.  
  7. <groupId>com.HibernateAnnotationMapping</groupId>
  8. <artifactId>HibernateAnnotationMappingSpring</artifactId>
  9. <version>1.0-SNAPSHOT</version>
  10.  
  11. <dependencies>
  12. <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
  13. <dependency>
  14. <groupId>org.springframework.data</groupId>
  15. <artifactId>spring-data-jpa</artifactId>
  16. <version>1.11.1.RELEASE</version>
  17. </dependency>
  18. <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  19. <dependency>
  20. <groupId>mysql</groupId>
  21. <artifactId>mysql-connector-java</artifactId>
  22. <version>6.0.6</version>
  23. </dependency>
  24. <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
  25. <dependency>
  26. <groupId>org.hibernate</groupId>
  27. <artifactId>hibernate-core</artifactId>
  28. <version>5.2.10.Final</version>
  29. </dependency>
  30.  
  31. </dependencies>
  32. </project>
  33.  
  34.  
  35.  
  36.  
  37.  
  38.  
  39. <?xml version="1.0" encoding="UTF-8"?>
  40. <beans xmlns="http://www.springframework.org/schema/beans"
  41. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
  42. xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  43. xmlns:jpa="http://www.springframework.org/schema/data/jpa"
  44. xsi:schemaLocation="
  45. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
  46. http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.0.xsd">
  47.  
  48. <!--Directory to scan for repository classes-->
  49. <jpa:repositories base-package="repository" />
  50.  
  51. <bean id="dataSource"
  52. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  53. <property name="driverClassName">
  54. <value>com.mysql.jdbc.Driver</value>
  55. </property>
  56. <property name="url">
  57. <value>jdbc:mysql://localhost:3306/spring</value>
  58. </property>
  59. <property name="username">
  60. <value>root</value>
  61. </property>
  62. <property name="password">
  63. <value>root</value>
  64. </property>
  65. </bean>
  66.  
  67. <bean id="entityManagerFactory"
  68. class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  69. <property name="dataSource" ref="dataSource" />
  70. <property name="persistenceUnitName" value="jpaData" />
  71. <property name="jpaVendorAdapter">
  72. <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
  73. </property>
  74. <property name="jpaProperties">
  75. <props>
  76. <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop>
  77. <prop key="hibernate.show_sql">true</prop>
  78. <prop key="hibernate.format_sql">false</prop>
  79. <prop key="hibernate.hbm2ddl.auto">create</prop>
  80. </props>
  81. </property>
  82. </bean>
  83.  
  84. <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
  85. <property name="entityManagerFactory" ref="entityManagerFactory"/>
  86. </bean>
  87.  
  88. </beans>
  89.  
  90.  
  91. package entity;
  92.  
  93. /**
  94. * Created by poryvai on 16.08.2017.
  95. */
  96.  
  97. import javax.persistence.*;
  98. import java.io.Serializable;
  99.  
  100. @Entity
  101. @Table(name = "address")
  102. public class Address implements Serializable{
  103.  
  104. private static final long serialVersionUID = -3276852226295894319L;
  105.  
  106. @Id
  107. @GeneratedValue(strategy = GenerationType.IDENTITY)
  108. private long id;
  109. @Column(name = "COUNTRY")
  110. private String country;
  111.  
  112. @Column(name = "CITY")
  113. private String city;
  114.  
  115. @Column(name = "STREET")
  116. private String street;
  117.  
  118. @Column(name = "POST_CODE", length = 10)
  119. private String postCode;
  120.  
  121. public Address() {
  122.  
  123. }
  124.  
  125. public Long getId() {
  126. return id;
  127. }
  128.  
  129. public void setId(Long id) {
  130. this.id = id;
  131. }
  132.  
  133. public String getCountry() {
  134. return country;
  135. }
  136.  
  137. public void setCountry(String country) {
  138. this.country = country;
  139. }
  140.  
  141. public String getCity() {
  142. return city;
  143. }
  144.  
  145. public void setCity(String city) {
  146. this.city = city;
  147. }
  148.  
  149. public String getStreet() {
  150. return street;
  151. }
  152.  
  153. public void setStreet(String street) {
  154. this.street = street;
  155. }
  156.  
  157. public String getPostCode() {
  158. return postCode;
  159. }
  160.  
  161. public void setPostCode(String postCode) {
  162. this.postCode = postCode;
  163. }
  164.  
  165. @Override
  166. public String toString() {
  167. return "Address{" +
  168. "id=" + id +
  169. ", country='" + country + ''' +
  170. ", city='" + city + ''' +
  171. ", street='" + street + ''' +
  172. ", postCode='" + postCode + ''' +
  173. '}';
  174. }
  175. }
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185. package entity;
  186.  
  187. /**
  188. * Created by poryvai on 16.08.2017.
  189. */
  190. import javax.persistence.*;
  191. import java.io.Serializable;
  192. import java.sql.Date;
  193. import java.util.*;
  194. @Entity
  195. @Table(name = "employee")
  196. public class Employee implements Serializable {
  197.  
  198. private static final long serialVersionUID = -7544538017359643203L;
  199. @Id
  200. @GeneratedValue(strategy = GenerationType.IDENTITY)
  201. private Long id;
  202.  
  203. @Column(name = "FIRST_NAME")
  204. private String firstName;
  205.  
  206. @Column(name = "LAST_NAME")
  207. private String lastName;
  208.  
  209. @Column(name = "BIRTHDAY")
  210. private Date birthday;
  211.  
  212. @OneToOne(cascade = CascadeType.ALL)
  213. private Address address;
  214.  
  215. @ManyToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
  216. @JoinTable(
  217. name = "EMPL_PROJ",
  218. joinColumns = @JoinColumn(name = "EMPLOYEE_ID"),
  219. inverseJoinColumns = @JoinColumn(name = "PROJECT_ID")
  220. )
  221. private Set<Project> projects;
  222.  
  223. public Employee() {
  224.  
  225. }
  226.  
  227. public Long getId() {
  228. return id;
  229. }
  230.  
  231. public void setId(Long id) {
  232. this.id = id;
  233. }
  234.  
  235. public String getFirstName() {
  236. return firstName;
  237. }
  238.  
  239. public void setFirstName(String firstName) {
  240. this.firstName = firstName;
  241. }
  242.  
  243. public String getLastName() {
  244. return lastName;
  245. }
  246.  
  247. public void setLastName(String lastName) {
  248. this.lastName = lastName;
  249. }
  250.  
  251. public Date getBirthday() {
  252. return birthday;
  253. }
  254.  
  255. public void setBirthday(Date birthday) {
  256. this.birthday = birthday;
  257. }
  258.  
  259. public Address getAddress() {
  260. return address;
  261. }
  262.  
  263. public void setAddress(Address address) {
  264. this.address = address;
  265. }
  266.  
  267. public Set<Project> getProjects() {
  268. return projects;
  269. }
  270.  
  271. public void setProjects(Set<Project> projects) {
  272. this.projects = projects;
  273. }
  274.  
  275. @Override
  276. public String toString() {
  277. return "Employee{" +
  278. "id=" + id +
  279. ", firstName='" + firstName + ''' +
  280. ", lastName='" + lastName + ''' +
  281. ", birthday=" + birthday +
  282. ", address=" + address +
  283. '}';
  284. }
  285. }
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292. package entity;
  293. import javax.persistence.*;
  294. import java.io.Serializable;
  295. import java.util.*;
  296.  
  297. /**
  298. * Created by poryvai on 16.08.2017.
  299. */
  300. @Entity
  301. @Table(name = "project")
  302. public class Project implements Serializable{
  303. private static final long serialVersionUID = 1796556740932985128L;
  304.  
  305. @Id
  306. @GeneratedValue(strategy = GenerationType.IDENTITY)
  307. private Long id;
  308.  
  309. @Column(name = "TITLE")
  310. private String title;
  311.  
  312. @ManyToMany(mappedBy = "projects")
  313. private Set<Employee> employees;
  314.  
  315. public Project() {
  316.  
  317. }
  318.  
  319. public Long getId() {
  320. return id;
  321. }
  322.  
  323. public void setId(Long id) {
  324. this.id = id;
  325. }
  326.  
  327. public String getTitle() {
  328. return title;
  329. }
  330.  
  331. public void setTitle(String title) {
  332. this.title = title;
  333. }
  334.  
  335. public Set<Employee> getEmployees() {
  336. return employees;
  337. }
  338.  
  339. public void setEmployees(Set<Employee> employees) {
  340. this.employees = employees;
  341. }
  342.  
  343. @Override
  344. public String toString() {
  345. return "Project{" +
  346. "id=" + id +
  347. ", title='" + title + ''' +
  348. '}';
  349. }
  350. }
  351.  
  352.  
  353.  
  354.  
  355.  
  356. package repository;
  357. import entity.Address;
  358. import org.springframework.data.jpa.repository.JpaRepository;
  359. import org.springframework.stereotype.Repository;
  360. /**
  361. * Created by poryvai on 16.08.2017.
  362. */
  363. @Repository
  364. public interface AddressRepository extends JpaRepository<Address, Long> {
  365. }
  366.  
  367.  
  368.  
  369.  
  370.  
  371.  
  372. package repository;
  373.  
  374. import org.springframework.data.jpa.repository.JpaRepository;
  375. import entity.Employee;
  376. import org.springframework.data.jpa.repository.Query;
  377. import org.springframework.stereotype.Repository;
  378.  
  379. /**
  380. * Created by poryvai on 16.08.2017.
  381. */
  382. @Repository
  383. public interface EmployeeRepository extends JpaRepository<Employee, Long> {
  384. @Query(value="SELECT * FROM employee WHERE FIRST_NAME=?1 AND LAST_NAME=?2", nativeQuery = true)
  385. Employee findByFirstNameAndLastName(String firstName, String lastName);
  386.  
  387. Employee findByLastName(String lastName);
  388. }
  389.  
  390.  
  391.  
  392.  
  393. package repository;
  394.  
  395. import org.springframework.data.jpa.repository.JpaRepository;
  396. import entity.Project;
  397. import org.springframework.stereotype.Repository;
  398.  
  399. /**
  400. * Created by poryvai on 16.08.2017.
  401. */
  402. @Repository
  403. public interface ProjectRepository extends JpaRepository<Project, Long> {
  404. }
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.  
  414.  
  415. package domain;
  416.  
  417. import entity.Address;
  418. import entity.Employee;
  419. import entity.Project;
  420. import org.springframework.context.support.ClassPathXmlApplicationContext;
  421. import repository.AddressRepository;
  422. import repository.EmployeeRepository;
  423. import repository.ProjectRepository;
  424.  
  425. import java.sql.Date;
  426. import java.sql.SQLException;
  427. import java.util.Calendar;
  428. import java.util.HashSet;
  429. import java.util.List;
  430. import java.util.Set;
  431.  
  432.  
  433. /**
  434. * Created by poryvai on 16.08.2017.
  435. */
  436. public class Domain {
  437. public static void main(String[] args) throws SQLException{
  438. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
  439.  
  440. AddressRepository addressRepository = context.getBean(AddressRepository.class);
  441. EmployeeRepository employeeRepository = context.getBean(EmployeeRepository.class);
  442. ProjectRepository projectRepository = context.getBean(ProjectRepository.class);
  443.  
  444. Address address = new Address();
  445. address.setId(1L);
  446. address.setCountry("DC");
  447. address.setCity("Gotham city");
  448. address.setStreet("Arkham street");
  449. address.setPostCode("12345");
  450.  
  451. Project project = new Project();
  452. project.setId(1L);
  453. project.setTitle("Gotham PD");
  454.  
  455. Employee employee = new Employee();
  456. employee.setId(1L);
  457. employee.setFirstName("James");
  458. employee.setLastName("Gordon");
  459.  
  460. Calendar calendar = Calendar.getInstance();
  461. calendar.set(1939, Calendar.MAY,1);
  462.  
  463. employee.setBirthday(new Date(calendar.getTime().getTime()));
  464. employee.setAddress(address);
  465.  
  466. Set<Employee> employees = new HashSet<Employee>();
  467. employees.add(employee);
  468. project.setEmployees(employees);
  469.  
  470. Set<Project> projects = new HashSet<Project>();
  471. projects.add(project);
  472. employee.setProjects(projects);
  473.  
  474. addressRepository.save(address);
  475. employeeRepository.save(employee);
  476. projectRepository.save(project);
  477.  
  478. List<Employee> employeeList = employeeRepository.findAll();
  479. for(Employee e: employeeList){
  480. System.out.println(e);
  481. }
  482.  
  483. Employee employee1 = employeeRepository.findOne(1L);
  484.  
  485.  
  486. System.out.println(employeeRepository.findByFirstNameAndLastName("James","Gordon"));
  487.  
  488. System.out.println(employeeRepository.findByLastName("Gordon"));
  489. }
  490.  
  491. }
  492.  
  493.  
  494.  
  495.  
  496.  
  497.  
  498. SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
  499. SLF4J: Defaulting to no-operation (NOP) logger implementation
  500. SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
  501. 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
  502. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
  503. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
  504. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
  505. at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
  506. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
  507. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
  508. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
  509. at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1081)
  510. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:856)
  511. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542)
  512. at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
  513. at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
  514. at domain.Domain.main(Domain.java:24)
  515. Caused by: java.lang.IllegalArgumentException: No persistence unit with name 'jpaData' found
  516. at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainPersistenceUnitInfo(DefaultPersistenceUnitManager.java:699)
  517. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:372)
  518. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:329)
  519. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370)
  520. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359)
  521. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
  522. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
  523. ... 12 more
  524.  
  525. Process finished with exit code 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement