Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:p="http://www.springframework.org/schema/p"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:jdbc="http://www.springframework.org/schema/jdbc"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
- <!-- Change DB by comment/uncomment property-placeholder -->
- <context:property-placeholder location="classpath:db/postgres.properties" system-properties-mode="OVERRIDE"/>
- <!--<context:property-placeholder location="classpath:db/hsqldb.properties" system-properties-mode="OVERRIDE"/>-->
- <context:component-scan base-package="ru.javawebinar.**.repository.jpa"/>
- <jdbc:initialize-database data-source="dataSource" enabled="${database.init}">
- <jdbc:script location="classpath:db/${jdbc.initLocation}"/>
- <jdbc:script encoding="utf-8" location="classpath:db/populateDB.sql"/>
- </jdbc:initialize-database>
- <!--no pooling-->
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="${database.driverClassName}"/>
- <property name="url" value="${database.url}"/>
- <property name="username" value="${database.username}"/>
- <property name="password" value="${database.password}"/>
- </bean>
- <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
- p:dataSource-ref="dataSource"
- p:packagesToScan="ru.javawebinar.**.model">
- <!--p:persistenceUnitName="persistenceUnit">-->
- <property name="jpaPropertyMap">
- <map>
- <entry key="#{T(org.hibernate.cfg.AvailableSettings).FORMAT_SQL}" value="${hibernate.format_sql}"/>
- <entry key="#{T(org.hibernate.cfg.AvailableSettings).USE_SQL_COMMENTS}" value="${hibernate.use_sql_comments}"/>
- <!--<entry key="#{T(org.hibernate.cfg.AvailableSettings).HBM2DDL_AUTO}" value="${hibernate.hbm2ddl.auto}"/>-->
- </map>
- </property>
- <property name="jpaVendorAdapter">
- <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
- p:showSql="${jpa.showSql}">
- </bean>
- </property>
- </bean>
- <tx:annotation-driven/>
- <!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) -->
- <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
- p:entityManagerFactory-ref="entityManagerFactory"/>
- </beans>
- import org.hibernate.validator.constraints.Length;
- import org.hibernate.validator.constraints.NotBlank;
- import org.hibernate.validator.constraints.Range;
- import javax.persistence.*;
- import javax.validation.constraints.NotNull;
- import java.time.LocalDate;
- import java.time.LocalDateTime;
- import java.time.LocalTime;
- @NamedQueries({
- @NamedQuery(name = Meal.DELETE, query = "DELETE FROM Meal m WHERE m.id=:id"),
- // @NamedQuery(name = Meal.BY_EMAIL, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles WHERE u.email=?1"),
- @NamedQuery(name = User.ALL_SORTED, query = "SELECT m FROM Meal m ORDER BY m.dateTime"),
- })
- @Entity
- @Table(name = "meals")
- public class Meal extends BaseEntity {
- public static final String DELETE = "Meal.delete";
- public static final String ALL_SORTED = "Meal.getAllSorted";
- @Column(name = "date_time", columnDefinition = "timestamp default now()")
- @NotBlank
- private LocalDateTime dateTime;
- @Column(name = "description")
- @Length(max = 40)
- private String description;
- @Column(name = "calories")
- @NotNull
- @Range(min = 10, max = 10000)
- private int calories;
- @ManyToOne(fetch = FetchType.LAZY)
- private User user;
- public Meal() {
- }
- public Meal(LocalDateTime dateTime, String description, int calories) {
- this(null, dateTime, description, calories);
- }
- public Meal(Integer id, LocalDateTime dateTime, String description, int calories) {
- super(id);
- this.dateTime = dateTime;
- this.description = description;
- this.calories = calories;
- }
- public LocalDateTime getDateTime() {
- return dateTime;
- }
- public String getDescription() {
- return description;
- }
- public int getCalories() {
- return calories;
- }
- public LocalDate getDate() {
- return dateTime.toLocalDate();
- }
- public LocalTime getTime() {
- return dateTime.toLocalTime();
- }
- public void setDateTime(LocalDateTime dateTime) {
- this.dateTime = dateTime;
- }
- public void setDescription(String description) {
- this.description = description;
- }
- public void setCalories(int calories) {
- this.calories = calories;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Override
- public String toString() {
- return "Meal{" +
- "id=" + id +
- ", dateTime=" + dateTime +
- ", description='" + description + ''' +
- ", calories=" + calories +
- '}';
- }
- }
- package ru.javawebinar.topjava.model;
- import org.hibernate.validator.constraints.Email;
- import org.hibernate.validator.constraints.Length;
- import org.hibernate.validator.constraints.NotBlank;
- import org.hibernate.validator.constraints.Range;
- import javax.persistence.*;
- import javax.validation.constraints.NotNull;
- import java.util.Date;
- import java.util.EnumSet;
- import java.util.Set;
- import static ru.javawebinar.topjava.util.MealsUtil.DEFAULT_CALORIES_PER_DAY;
- @NamedQueries({
- @NamedQuery(name = User.DELETE, query = "DELETE FROM User u WHERE u.id=:id"),
- @NamedQuery(name = User.BY_EMAIL, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles WHERE u.email=?1"),
- @NamedQuery(name = User.ALL_SORTED, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles ORDER BY u.name, u.email"),
- })
- @Entity
- @Table(name = "users", uniqueConstraints = {@UniqueConstraint(columnNames = "email", name = "users_unique_email_idx")})
- public class User extends NamedEntity {
- public static final String DELETE = "User.delete";
- public static final String BY_EMAIL = "User.getByEmail";
- public static final String ALL_SORTED = "User.getAllSorted";
- @Column(name = "email", nullable = false, unique = true)
- @Email
- @NotBlank
- private String email;
- @Column(name = "password", nullable = false)
- @NotBlank
- @Length(min = 5)
- private String password;
- @Column(name = "enabled", nullable = false, columnDefinition = "bool default true")
- private boolean enabled = true;
- @Column(name = "registered", columnDefinition = "timestamp default now()")
- @NotNull
- private Date registered = new Date();
- @Enumerated(EnumType.STRING)
- @CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
- @Column(name = "role")
- @ElementCollection(fetch = FetchType.EAGER)
- private Set<Role> roles;
- @Column(name = "calories_per_day", columnDefinition = "int default 2000")
- @Range(min = 10, max = 10000)
- private int caloriesPerDay = DEFAULT_CALORIES_PER_DAY;
- public User() {
- }
- public User(User u) {
- this(u.getId(), u.getName(), u.getEmail(), u.getPassword(), u.getCaloriesPerDay(), u.isEnabled(), u.getRoles());
- }
- public User(Integer id, String name, String email, String password, Role role, Role... roles) {
- this(id, name, email, password, DEFAULT_CALORIES_PER_DAY, true, EnumSet.of(role, roles));
- }
- public User(Integer id, String name, String email, String password, int caloriesPerDay, boolean enabled, Set<Role> roles) {
- super(id, name);
- this.email = email;
- this.password = password;
- this.caloriesPerDay = caloriesPerDay;
- this.enabled = enabled;
- this.roles = roles;
- }
- public String getEmail() {
- return email;
- }
- public void setEmail(String email) {
- this.email = email;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public Date getRegistered() {
- return registered;
- }
- public void setRegistered(Date registered) {
- this.registered = registered;
- }
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
- }
- public int getCaloriesPerDay() {
- return caloriesPerDay;
- }
- public void setCaloriesPerDay(int caloriesPerDay) {
- this.caloriesPerDay = caloriesPerDay;
- }
- public boolean isEnabled() {
- return enabled;
- }
- public Set<Role> getRoles() {
- return roles;
- }
- public String getPassword() {
- return password;
- }
- @Override
- public String toString() {
- return "User{" +
- "id=" + id +
- ", email=" + email +
- ", name=" + name +
- ", enabled=" + enabled +
- ", roles=" + roles +
- ", caloriesPerDay=" + caloriesPerDay +
- '}';
- }
- }
- 11-Aug-2017 17:57:46.341 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [spring/spring-db.xml]: Invocation of init method failed; nested exception is org.hibernate.DuplicateMappingException: Duplicate query mapping User.getAllSorted
- 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:1078)
- at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
- at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
- at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
- at ru.javawebinar.topjava.web.MealServlet.init(MealServlet.java:31)
- at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
- at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
- at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)
- at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4921)
- at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5231)
- at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
- at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
- at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
- at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
- at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702)
- 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:300)
- 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:300)
- 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.DuplicateMappingException: Duplicate query mapping User.getAllSorted
- at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.checkQueryName(InFlightMetadataCollectorImpl.java:521)
- at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.applyNamedQuery(InFlightMetadataCollectorImpl.java:515)
- at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.addNamedQuery(InFlightMetadataCollectorImpl.java:511)
- at org.hibernate.cfg.annotations.QueryBinder.bindQuery(QueryBinder.java:76)
- at org.hibernate.cfg.annotations.QueryBinder.bindQueries(QueryBinder.java:218)
- at org.hibernate.cfg.AnnotationBinder.bindQueries(AnnotationBinder.java:360)
- at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:535)
- at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:249)
- at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
- at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:858)
- at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:885)
- at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
- at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
- 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)
- ... 60 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement