Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.findme.config;
- import com.findme.dao.PostDAO;
- import com.findme.dao.UserDAO;
- import com.findme.service.PostService;
- import com.findme.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.annotation.Bean;
- import org.springframework.context.annotation.ComponentScan;
- import org.springframework.context.annotation.Configuration;
- import org.springframework.jdbc.datasource.DriverManagerDataSource;
- import org.springframework.orm.jpa.JpaTransactionManager;
- import org.springframework.orm.jpa.JpaVendorAdapter;
- import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
- import org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter;
- import org.springframework.transaction.PlatformTransactionManager;
- import org.springframework.transaction.annotation.EnableTransactionManagement;
- import org.springframework.web.servlet.config.annotation.EnableWebMvc;
- import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
- import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
- import org.thymeleaf.spring5.SpringTemplateEngine;
- import org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver;
- import org.thymeleaf.spring5.view.ThymeleafViewResolver;
- import javax.persistence.EntityManagerFactory;
- @Configuration
- @EnableTransactionManagement(proxyTargetClass = true)
- @EnableWebMvc
- @ComponentScan(basePackages = {"com.findme"})
- public class AppConfig implements WebMvcConfigurer {
- @Autowired
- private ApplicationContext applicationContext;
- @Bean
- public UserDAO userDAO(){
- return new UserDAO();
- }
- @Bean
- public UserService userService(){
- UserService userService = new UserService(userDAO());
- userService.setUserDAO(userDAO());
- return userService;
- }
- @Bean
- public PostDAO postDAO(){
- return new PostDAO();
- }
- @Bean
- public PostService postService(){
- PostService postService = new PostService(postDAO());
- postService.setPostDAO(postDAO());
- return postService;
- }
- @Bean
- public SpringResourceTemplateResolver templateResolver(){
- SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
- templateResolver.setApplicationContext(applicationContext);
- templateResolver.setPrefix("classpath:/views/");
- templateResolver.setSuffix(".html");
- return templateResolver;
- }
- @Bean
- public SpringTemplateEngine templateEngine(){
- SpringTemplateEngine templateEngine = new SpringTemplateEngine();
- templateEngine.setTemplateResolver(templateResolver());
- templateEngine.setEnableSpringELCompiler(true);
- return templateEngine;
- }
- @Override
- public void configureViewResolvers(ViewResolverRegistry registry){
- ThymeleafViewResolver resolver = new ThymeleafViewResolver();
- resolver.setTemplateEngine(templateEngine());
- resolver.setCharacterEncoding("UTF-8");
- registry.viewResolver(resolver);
- }
- @Bean
- public LocalContainerEntityManagerFactoryBean entityManagerFactory(){
- LocalContainerEntityManagerFactoryBean em = new LocalContainerEntityManagerFactoryBean();
- em.setDataSource(dataSource());
- em.setPackagesToScan("com.findme/models");
- JpaVendorAdapter vendorAdapter = new HibernateJpaVendorAdapter();
- em.setJpaVendorAdapter(vendorAdapter);
- return em;
- }
- @Bean
- public DriverManagerDataSource dataSource(){
- DriverManagerDataSource dataSource = new DriverManagerDataSource();
- dataSource.setDriverClassName("oracle.jdbc.driver.OracleDriver");
- dataSource.setUrl("jdbc:oracle:thin:@gc-test.c4lz1tpzgnkv.eu-central-1.rds.amazonaws.com:1521:ORCL");
- dataSource.setUsername("main");
- dataSource.setPassword("ifgjrkzr");
- return dataSource;
- }
- @Bean
- public PlatformTransactionManager transactionManager(EntityManagerFactory emf){
- JpaTransactionManager transactionManager = new JpaTransactionManager();
- transactionManager.setEntityManagerFactory(emf);
- return transactionManager;
- }
- }
- package com.findme.models;
- import com.fasterxml.jackson.annotation.JsonCreator;
- import com.fasterxml.jackson.annotation.JsonFormat;
- import com.fasterxml.jackson.annotation.JsonIgnore;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import javax.persistence.*;
- import java.io.IOException;
- import java.util.Date;
- import java.util.List;
- import java.util.Objects;
- import java.util.StringJoiner;
- @Entity
- @Table(name = "USER_FM")
- public class User extends IdEntity{
- private Long id;
- private String firstName;
- private String lastName;
- private String phone;
- private String country;
- private String city;
- private Integer age;
- private Date dateRegistered;
- private Date dateLastActive;
- private RelationshipType relationshipStatus;
- private ReligionType religion;
- private String school;
- private String university;
- private List<Message> messageSent;
- private List<Message> messageReceived;
- private List<Post> posts;
- public User() {
- }
- @Id
- @SequenceGenerator(name = "USER_SQ", sequenceName = "USER_FM_SEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "USER_SQ")
- @Column(name = "USER_ID")
- @Override
- public Long getId() {
- return id;
- }
- @Column(name = "USER_FIRST_NAME", nullable = false)
- public String getFirstName() {
- return firstName;
- }
- @Column(name = "USER_LAST_NAME", nullable = false)
- public String getLastName() {
- return lastName;
- }
- @Column(name = "PHONE", nullable = false)
- public String getPhone() {
- return phone;
- }
- @Column(name = "COUNTRY", nullable = false)
- public String getCountry() {
- return country;
- }
- @Column(name = "CITY", nullable = false)
- public String getCity() {
- return city;
- }
- @Column(name = "AGE", nullable = false)
- public Integer getAge() {
- return age;
- }
- @Column(name = "DATE_REGISTERED", nullable = false)
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
- public Date getDateRegistered() {
- return dateRegistered;
- }
- @Column(name = "DATE_LAST_ACTIVE", nullable = false)
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
- public Date getDateLastActive() {
- return dateLastActive;
- }
- @Enumerated(EnumType.STRING)
- @Column(name = "RELATIONSHIP_TYPE", nullable = false)
- public RelationshipType getRelationshipStatus() {
- return relationshipStatus;
- }
- @Enumerated(EnumType.STRING)
- @Column(name = "RELIGION_TYPE", nullable = false)
- public ReligionType getReligion() {
- return religion;
- }
- @Column(name = "SCHOOL", nullable = false)
- public String getSchool() {
- return school;
- }
- @Column(name = "UNIVERSITY", nullable = false)
- public String getUniversity() {
- return university;
- }
- @JsonIgnore
- @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Message.class)
- public List<Message> getMessageSent() {
- return messageSent;
- }
- @JsonIgnore
- @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Message.class)
- public List<Message> getMessageReceived() {
- return messageReceived;
- }
- @JsonIgnore
- @OneToMany(mappedBy = "user", fetch = FetchType.LAZY, targetEntity = Post.class)
- public List<Post> getPosts() {
- return posts;
- }
- @JsonCreator
- public static User createFromJson(String jsonString){
- ObjectMapper objectMapper = new ObjectMapper();
- User user = null;
- try {
- user = objectMapper.readValue(jsonString, User.class);
- }catch (IOException e){
- e.printStackTrace();
- }
- return user;
- }
- //seters, equals, hashcode and toString let down
- }
- package com.findme.models;
- import com.fasterxml.jackson.annotation.JsonCreator;
- import com.fasterxml.jackson.annotation.JsonFormat;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import javax.persistence.*;
- import java.io.IOException;
- import java.util.Date;
- import java.util.Objects;
- import java.util.StringJoiner;
- @Entity
- @Table(name = "MESSAGE")
- public class Message extends IdEntity {
- private Long id;
- private String text;
- private Date dateSent;
- private Date dateRead;
- private User userFrom;
- private User userTo;
- public Message() {
- }
- @Id
- @SequenceGenerator(name = "MES_SQ", sequenceName = "MESSAGE_SEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "MES_SQ")
- @Column(name = "MESSAGE_ID")
- @Override
- public Long getId() {
- return id;
- }
- @Column(name = "TEXT_MESSAGE")
- public String getText() {
- return text;
- }
- @Column(name = "DATE_SENT", nullable = false)
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
- public Date getDateSent() {
- return dateSent;
- }
- @Column(name = "DATE_READ", nullable = false)
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
- public Date getDateRead() {
- return dateRead;
- }
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ID_USER_FROM")
- public User getUserFrom() {
- return userFrom;
- }
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ID_USER_TO")
- public User getUserTo() {
- return userTo;
- }
- @JsonCreator
- public static Message createFromJson(String jsonString){
- ObjectMapper objectMapper = new ObjectMapper();
- Message message = null;
- try {
- message = objectMapper.readValue(jsonString, Message.class);
- }catch (IOException e){
- e.printStackTrace();
- }
- return message;
- }
- }
- package com.findme.models;
- import com.fasterxml.jackson.annotation.JsonCreator;
- import com.fasterxml.jackson.annotation.JsonFormat;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import javax.persistence.*;
- import java.io.IOException;
- import java.util.Date;
- import java.util.Objects;
- import java.util.StringJoiner;
- @Entity
- @Table(name = "POST")
- public class Post extends IdEntity{
- private Long id;
- private String message;
- private Date datePosted;
- private User userPosted;
- public Post() {
- }
- @Id
- @SequenceGenerator(name = "POS_SQ", sequenceName = "POST_SEQ", allocationSize = 1)
- @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "POS_SQ")
- @Column(name = "POST_ID")
- @Override
- public Long getId() {
- return id;
- }
- @Column(name = "MESSAGE", nullable = false)
- public String getMessage() {
- return message;
- }
- @Column(name = "DATE_POSTED", nullable = false)
- @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-MM-yyyy")
- public Date getDatePosted() {
- return datePosted;
- }
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ID_USER_POSTED")
- public User getUserPosted() {
- return userPosted;
- }
- @JsonCreator
- public static Post createFromJson(String jsonString){
- ObjectMapper objectMapper = new ObjectMapper();
- Post post = null;
- try {
- post = objectMapper.readValue(jsonString, Post.class);
- }catch (IOException e){
- e.printStackTrace();
- }
- return post;
- }
- }
- 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
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1745)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:576)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:498)
- at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:320)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
- at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:318)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
- at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1083)
- at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:853)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546)
- at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:400)
- at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:291)
- at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:103)
- at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4625)
- at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5091)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:742)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:718)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703)
- at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1737)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456)
- at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287)
- at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
- at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
- at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
- at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
- at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
- at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
- at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
- at sun.rmi.transport.Transport$1.run(Transport.java:200)
- at sun.rmi.transport.Transport$1.run(Transport.java:197)
- at java.security.AccessController.doPrivileged(Native Method)
- at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
- at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
- at java.security.AccessController.doPrivileged(Native Method)
- at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
- at java.lang.Thread.run(Thread.java:745)
- Caused by: org.hibernate.AnnotationException: mappedBy reference an unknown target entity property: com.findme.models.Message.user in com.findme.models.User.messageReceived
- at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:785)
- at org.hibernate.cfg.annotations.CollectionBinder$1.secondPass(CollectionBinder.java:735)
- at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:54)
- at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1635)
- at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.processSecondPasses(InFlightMetadataCollectorImpl.java:1603)
- at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:278)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:861)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:888)
- at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:57)
- at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:365)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:390)
- at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:377)
- at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:341)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1804)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1741)
- ... 57 more
Add Comment
Please, Sign In to add comment