Guest User

Untitled

a guest
Feb 1st, 2019
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.98 KB | None | 0 0
  1. package com.findme.config;
  2.  
  3. import com.findme.dao.PostDAO;
  4. import com.findme.dao.UserDAO;
  5. import com.findme.service.PostService;
  6. import com.findme.service.UserService;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.context.ApplicationContext;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.ComponentScan;
  11. import org.springframework.context.annotation.Configuration;
  12. import org.springframework.jdbc.datasource.DriverManagerDataSource;
  13. import org.springframework.orm.jpa.JpaTransactionManager;
  14. import org.springframework.orm.jpa.JpaVendorAdapter;
  15. import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
  16. import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
  17. import org.springframework.transaction.PlatformTransactionManager;
  18. import org.springframework.transaction.annotation.EnableTransactionManagement;
  19. import org.springframework.web.servlet.config.annotation.EnableWebMvc;
  20. import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
  21. import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
  22. import org.thymeleaf.spring5.SpringTemplateEngine;
  23. import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
  24. import org.thymeleaf.spring5.view.ThymeleafViewResolver;
  25.  
  26. import javax.persistence.EntityManagerFactory;
  27.  
  28. @Configuration
  29. @EnableTransactionManagement(proxyTargetClass = true)
  30. @EnableWebMvc
  31. @ComponentScan(basePackages = {"com.findme"})
  32. public class AppConfig implements WebMvcConfigurer {
  33.  
  34. @Autowired
  35. private ApplicationContext applicationContext;
  36.  
  37. @Bean
  38. public UserDAO userDAO(){
  39. return new UserDAO();
  40. }
  41.  
  42. @Bean
  43. public UserService userService(){
  44. UserService userService = new UserService(userDAO());
  45. userService.setUserDAO(userDAO());
  46. return userService;
  47. }
  48.  
  49. @Bean
  50. public PostDAO postDAO(){
  51. return new PostDAO();
  52. }
  53.  
  54. @Bean
  55. public PostService postService(){
  56. PostService postService = new PostService(postDAO());
  57. postService.setPostDAO(postDAO());
  58. return postService;
  59. }
  60.  
  61. @Bean
  62. public SpringResourceTemplateResolver templateResolver(){
  63. SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
  64. templateResolver.setApplicationContext(applicationContext);
  65. templateResolver.setPrefix("classpath:/views/");
  66. templateResolver.setSuffix(".html");
  67. return templateResolver;
  68. }
  69.  
  70. @Bean
  71. public SpringTemplateEngine templateEngine(){
  72. SpringTemplateEngine templateEngine = new SpringTemplateEngine();
  73. templateEngine.setTemplateResolver(templateResolver());
  74. templateEngine.setEnableSpringELCompiler(true);
  75. return templateEngine;
  76. }
  77.  
  78. @Override
  79. public void configureViewResolvers(ViewResolverRegistry registry){
  80. ThymeleafViewResolver resolver = new ThymeleafViewResolver();
  81. resolver.setTemplateEngine(templateEngine());
  82. resolver.setCharacterEncoding("UTF-8");
  83. registry.viewResolver(resolver);
  84. }
  85.  
  86. @Bean
  87. public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
  88. LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
  89. em.setDataSource(dataSource());
  90. em.setPackagesToScan("com.findme/models");
  91.  
  92. JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
  93. em.setJpaVendorAdapter(vendorAdapter);
  94.  
  95. return em;
  96. }
  97.  
  98. @Bean
  99. public DriverManagerDataSource dataSource(){
  100. DriverManagerDataSource dataSource = new DriverManagerDataSource();
  101. dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
  102. dataSource.setUrl("jdbc:oracle:thin:@gc-test.c4lz1tpzgnkv.eu-central-1.rds.amazonaws.com:1521:ORCL");
  103. dataSource.setUsername("main");
  104. dataSource.setPassword("ifgjrkzr");
  105. return dataSource;
  106. }
  107.  
  108. @Bean
  109. public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
  110. JpaTransactionManager transactionManager = new JpaTransactionManager();
  111. transactionManager.setEntityManagerFactory(emf);
  112.  
  113. return transactionManager;
  114. }
  115. }
  116.  
  117. package com.findme.models;
  118.  
  119. import com.fasterxml.jackson.annotation.JsonCreator;
  120. import com.fasterxml.jackson.annotation.JsonFormat;
  121. import com.fasterxml.jackson.annotation.JsonIgnore;
  122. import com.fasterxml.jackson.databind.ObjectMapper;
  123.  
  124. import javax.persistence.*;
  125. import java.io.IOException;
  126. import java.util.Date;
  127. import java.util.List;
  128. import java.util.Objects;
  129. import java.util.StringJoiner;
  130.  
  131. @Entity
  132. @Table(name = "USER_FM")
  133. public class User extends IdEntity{
  134. private Long id;
  135. private String firstName;
  136. private String lastName;
  137. private String phone;
  138. private String country;
  139. private String city;
  140. private Integer age;
  141. private Date dateRegistered;
  142. private Date dateLastActive;
  143. private RelationshipType relationshipStatus;
  144. private ReligionType religion;
  145. private String school;
  146. private String university;
  147.  
  148. private List<Message> messageSent;
  149. private List<Message> messageReceived;
  150. private List<Post> posts;
  151.  
  152. public User() {
  153. }
  154.  
  155. @Id
  156. @SequenceGenerator(name = "USER_SQ", sequenceName = "USER_FM_SEQ", allocationSize = 1)
  157. @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SQ")
  158. @Column(name = "USER_ID")
  159. @Override
  160. public Long getId() {
  161. return id;
  162. }
  163.  
  164. @Column(name = "USER_FIRST_NAME", nullable = false)
  165. public String getFirstName() {
  166. return firstName;
  167. }
  168.  
  169. @Column(name = "USER_LAST_NAME", nullable = false)
  170. public String getLastName() {
  171. return lastName;
  172. }
  173.  
  174. @Column(name = "PHONE", nullable = false)
  175. public String getPhone() {
  176. return phone;
  177. }
  178.  
  179. @Column(name = "COUNTRY", nullable = false)
  180. public String getCountry() {
  181. return country;
  182. }
  183.  
  184. @Column(name = "CITY", nullable = false)
  185. public String getCity() {
  186. return city;
  187. }
  188.  
  189. @Column(name = "AGE", nullable = false)
  190. public Integer getAge() {
  191. return age;
  192. }
  193.  
  194. @Column(name = "DATE_REGISTERED", nullable = false)
  195. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
  196. public Date getDateRegistered() {
  197. return dateRegistered;
  198. }
  199.  
  200. @Column(name = "DATE_LAST_ACTIVE", nullable = false)
  201. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
  202. public Date getDateLastActive() {
  203. return dateLastActive;
  204. }
  205.  
  206. @Enumerated(EnumType.STRING)
  207. @Column(name = "RELATIONSHIP_TYPE", nullable = false)
  208. public RelationshipType getRelationshipStatus() {
  209. return relationshipStatus;
  210. }
  211.  
  212. @Enumerated(EnumType.STRING)
  213. @Column(name = "RELIGION_TYPE", nullable = false)
  214. public ReligionType getReligion() {
  215. return religion;
  216. }
  217.  
  218. @Column(name = "SCHOOL", nullable = false)
  219. public String getSchool() {
  220. return school;
  221. }
  222.  
  223. @Column(name = "UNIVERSITY", nullable = false)
  224. public String getUniversity() {
  225. return university;
  226. }
  227.  
  228. @JsonIgnore
  229. @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Message.class)
  230. public List<Message> getMessageSent() {
  231. return messageSent;
  232. }
  233.  
  234. @JsonIgnore
  235. @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Message.class)
  236. public List<Message> getMessageReceived() {
  237. return messageReceived;
  238. }
  239.  
  240. @JsonIgnore
  241. @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Post.class)
  242. public List<Post> getPosts() {
  243. return posts;
  244. }
  245.  
  246. @JsonCreator
  247. public static User createFromJson(String jsonString){
  248. ObjectMapper objectMapper = new ObjectMapper();
  249. User user = null;
  250.  
  251. try {
  252. user = objectMapper.readValue(jsonString, User.class);
  253. }catch (IOException e){
  254. e.printStackTrace();
  255. }
  256. return user;
  257. }
  258. //seters, equals, hashcode and toString let down
  259. }
  260.  
  261. package com.findme.models;
  262.  
  263. import com.fasterxml.jackson.annotation.JsonCreator;
  264. import com.fasterxml.jackson.annotation.JsonFormat;
  265. import com.fasterxml.jackson.databind.ObjectMapper;
  266.  
  267. import javax.persistence.*;
  268. import java.io.IOException;
  269. import java.util.Date;
  270. import java.util.Objects;
  271. import java.util.StringJoiner;
  272.  
  273. @Entity
  274. @Table(name = "MESSAGE")
  275. public class Message extends IdEntity {
  276. private Long id;
  277. private String text;
  278. private Date dateSent;
  279. private Date dateRead;
  280. private User userFrom;
  281. private User userTo;
  282.  
  283. public Message() {
  284. }
  285.  
  286. @Id
  287. @SequenceGenerator(name = "MES_SQ", sequenceName = "MESSAGE_SEQ", allocationSize = 1)
  288. @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MES_SQ")
  289. @Column(name = "MESSAGE_ID")
  290. @Override
  291. public Long getId() {
  292. return id;
  293. }
  294.  
  295. @Column(name = "TEXT_MESSAGE")
  296. public String getText() {
  297. return text;
  298. }
  299.  
  300. @Column(name = "DATE_SENT", nullable = false)
  301. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
  302. public Date getDateSent() {
  303. return dateSent;
  304. }
  305.  
  306. @Column(name = "DATE_READ", nullable = false)
  307. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
  308. public Date getDateRead() {
  309. return dateRead;
  310. }
  311.  
  312. @ManyToOne(fetch = FetchType.LAZY)
  313. @JoinColumn(name = "ID_USER_FROM")
  314. public User getUserFrom() {
  315. return userFrom;
  316. }
  317.  
  318. @ManyToOne(fetch = FetchType.LAZY)
  319. @JoinColumn(name = "ID_USER_TO")
  320. public User getUserTo() {
  321. return userTo;
  322. }
  323.  
  324. @JsonCreator
  325. public static Message createFromJson(String jsonString){
  326. ObjectMapper objectMapper = new ObjectMapper();
  327. Message message = null;
  328.  
  329. try {
  330. message = objectMapper.readValue(jsonString, Message.class);
  331. }catch (IOException e){
  332. e.printStackTrace();
  333. }
  334. return message;
  335. }
  336. }
  337.  
  338. package com.findme.models;
  339.  
  340. import com.fasterxml.jackson.annotation.JsonCreator;
  341. import com.fasterxml.jackson.annotation.JsonFormat;
  342. import com.fasterxml.jackson.databind.ObjectMapper;
  343.  
  344. import javax.persistence.*;
  345. import java.io.IOException;
  346. import java.util.Date;
  347. import java.util.Objects;
  348. import java.util.StringJoiner;
  349.  
  350. @Entity
  351. @Table(name = "POST")
  352. public class Post extends IdEntity{
  353. private Long id;
  354. private String message;
  355. private Date datePosted;
  356. private User userPosted;
  357.  
  358. public Post() {
  359. }
  360.  
  361. @Id
  362. @SequenceGenerator(name = "POS_SQ", sequenceName = "POST_SEQ", allocationSize = 1)
  363. @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "POS_SQ")
  364. @Column(name = "POST_ID")
  365. @Override
  366. public Long getId() {
  367. return id;
  368. }
  369.  
  370. @Column(name = "MESSAGE", nullable = false)
  371. public String getMessage() {
  372. return message;
  373. }
  374.  
  375. @Column(name = "DATE_POSTED", nullable = false)
  376. @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
  377. public Date getDatePosted() {
  378. return datePosted;
  379. }
  380.  
  381. @ManyToOne(fetch = FetchType.LAZY)
  382. @JoinColumn(name = "ID_USER_POSTED")
  383. public User getUserPosted() {
  384. return userPosted;
  385. }
  386.  
  387. @JsonCreator
  388. public static Post createFromJson(String jsonString){
  389. ObjectMapper objectMapper = new ObjectMapper();
  390. Post post = null;
  391.  
  392. try {
  393. post = objectMapper.readValue(jsonString, Post.class);
  394. }catch (IOException e){
  395. e.printStackTrace();
  396. }
  397. return post;
  398. }
  399. }
  400.  
  401. org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in com.findme.config.AppConfig: Invocation of init method failed; nested exception is org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.findme.models.Message.user in com.findme.models.User.messageReceived
  402. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
  403. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)
  404. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
  405. at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
  406. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
  407. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
  408. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
  409. at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083)
  410. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:853)
  411. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
  412. at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:400)
  413. at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)
  414. at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
  415. at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4625)
  416. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5091)
  417. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  418. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:742)
  419. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
  420. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
  421. at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1737)
  422. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  423. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  424. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  425. at java.lang.reflect.Method.invoke(Method.java:498)
  426. at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
  427. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  428. at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  429. at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456)
  430. at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405)
  431. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  432. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  433. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  434. at java.lang.reflect.Method.invoke(Method.java:498)
  435. at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
  436. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  437. at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  438. at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
  439. at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
  440. at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
  441. at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
  442. at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
  443. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  444. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  445. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  446. at java.lang.reflect.Method.invoke(Method.java:498)
  447. at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
  448. at sun.rmi.transport.Transport$1.run(Transport.java:200)
  449. at sun.rmi.transport.Transport$1.run(Transport.java:197)
  450. at java.security.AccessController.doPrivileged(Native Method)
  451. at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
  452. at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
  453. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
  454. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
  455. at java.security.AccessController.doPrivileged(Native Method)
  456. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
  457. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  458. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  459. at java.lang.Thread.run(Thread.java:745)
  460. Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.findme.models.Message.user in com.findme.models.User.messageReceived
  461. at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:785)
  462. at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:735)
  463. at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54)
  464. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1635)
  465. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1603)
  466. at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
  467. at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:861)
  468. at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:888)
  469. at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
  470. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
  471. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
  472. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
  473. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
  474. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804)
  475. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1741)
  476. ... 57 more
Add Comment
Please, Sign In to add comment