Advertisement
Guest User

Untitled

a guest
Aug 11th, 2017
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.56 KB | None | 0 0
  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  6. xmlns:tx="http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  9. http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
  10. http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
  11.  
  12. <!-- Change DB by comment/uncomment property-placeholder -->
  13.  
  14. <context:property-placeholder location="classpath:db/postgres.properties" system-properties-mode="OVERRIDE"/>
  15. <!--<context:property-placeholder location="classpath:db/hsqldb.properties" system-properties-mode="OVERRIDE"/>-->
  16.  
  17. <context:component-scan base-package="ru.javawebinar.**.repository.jpa"/>
  18.  
  19. <jdbc:initialize-database data-source="dataSource" enabled="${database.init}">
  20. <jdbc:script location="classpath:db/${jdbc.initLocation}"/>
  21. <jdbc:script encoding="utf-8" location="classpath:db/populateDB.sql"/>
  22. </jdbc:initialize-database>
  23.  
  24. <!--no pooling-->
  25. <bean id="dataSource"
  26. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  27. <property name="driverClassName" value="${database.driverClassName}"/>
  28. <property name="url" value="${database.url}"/>
  29. <property name="username" value="${database.username}"/>
  30. <property name="password" value="${database.password}"/>
  31. </bean>
  32.  
  33. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
  34. p:dataSource-ref="dataSource"
  35. p:packagesToScan="ru.javawebinar.**.model">
  36. <!--p:persistenceUnitName="persistenceUnit">-->
  37.  
  38. <property name="jpaPropertyMap">
  39. <map>
  40. <entry key="#{T(org.hibernate.cfg.AvailableSettings).FORMAT_SQL}" value="${hibernate.format_sql}"/>
  41. <entry key="#{T(org.hibernate.cfg.AvailableSettings).USE_SQL_COMMENTS}" value="${hibernate.use_sql_comments}"/>
  42. <!--<entry key="#{T(org.hibernate.cfg.AvailableSettings).HBM2DDL_AUTO}" value="${hibernate.hbm2ddl.auto}"/>-->
  43. </map>
  44. </property>
  45.  
  46. <property name="jpaVendorAdapter">
  47. <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
  48. p:showSql="${jpa.showSql}">
  49. </bean>
  50. </property>
  51. </bean>
  52.  
  53. <tx:annotation-driven/>
  54.  
  55. <!-- Transaction manager for a single JPA EntityManagerFactory (alternative to JTA) -->
  56. <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
  57. p:entityManagerFactory-ref="entityManagerFactory"/>
  58.  
  59. </beans>
  60.  
  61. import org.hibernate.validator.constraints.Length;
  62. import org.hibernate.validator.constraints.NotBlank;
  63. import org.hibernate.validator.constraints.Range;
  64.  
  65. import javax.persistence.*;
  66. import javax.validation.constraints.NotNull;
  67. import java.time.LocalDate;
  68. import java.time.LocalDateTime;
  69. import java.time.LocalTime;
  70.  
  71. @NamedQueries({
  72. @NamedQuery(name = Meal.DELETE, query = "DELETE FROM Meal m WHERE m.id=:id"),
  73. // @NamedQuery(name = Meal.BY_EMAIL, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles WHERE u.email=?1"),
  74. @NamedQuery(name = User.ALL_SORTED, query = "SELECT m FROM Meal m ORDER BY m.dateTime"),
  75. })
  76.  
  77. @Entity
  78. @Table(name = "meals")
  79. public class Meal extends BaseEntity {
  80.  
  81. public static final String DELETE = "Meal.delete";
  82. public static final String ALL_SORTED = "Meal.getAllSorted";
  83.  
  84. @Column(name = "date_time", columnDefinition = "timestamp default now()")
  85. @NotBlank
  86. private LocalDateTime dateTime;
  87.  
  88. @Column(name = "description")
  89. @Length(max = 40)
  90. private String description;
  91.  
  92. @Column(name = "calories")
  93. @NotNull
  94. @Range(min = 10, max = 10000)
  95. private int calories;
  96.  
  97. @ManyToOne(fetch = FetchType.LAZY)
  98. private User user;
  99.  
  100. public Meal() {
  101. }
  102.  
  103. public Meal(LocalDateTime dateTime, String description, int calories) {
  104. this(null, dateTime, description, calories);
  105. }
  106.  
  107. public Meal(Integer id, LocalDateTime dateTime, String description, int calories) {
  108. super(id);
  109. this.dateTime = dateTime;
  110. this.description = description;
  111. this.calories = calories;
  112. }
  113.  
  114. public LocalDateTime getDateTime() {
  115. return dateTime;
  116. }
  117.  
  118. public String getDescription() {
  119. return description;
  120. }
  121.  
  122. public int getCalories() {
  123. return calories;
  124. }
  125.  
  126. public LocalDate getDate() {
  127. return dateTime.toLocalDate();
  128. }
  129.  
  130. public LocalTime getTime() {
  131. return dateTime.toLocalTime();
  132. }
  133.  
  134. public void setDateTime(LocalDateTime dateTime) {
  135. this.dateTime = dateTime;
  136. }
  137.  
  138. public void setDescription(String description) {
  139. this.description = description;
  140. }
  141.  
  142. public void setCalories(int calories) {
  143. this.calories = calories;
  144. }
  145.  
  146. public User getUser() {
  147. return user;
  148. }
  149.  
  150. public void setUser(User user) {
  151. this.user = user;
  152. }
  153.  
  154. @Override
  155. public String toString() {
  156. return "Meal{" +
  157. "id=" + id +
  158. ", dateTime=" + dateTime +
  159. ", description='" + description + ''' +
  160. ", calories=" + calories +
  161. '}';
  162. }
  163. }
  164.  
  165. package ru.javawebinar.topjava.model;
  166.  
  167. import org.hibernate.validator.constraints.Email;
  168. import org.hibernate.validator.constraints.Length;
  169. import org.hibernate.validator.constraints.NotBlank;
  170. import org.hibernate.validator.constraints.Range;
  171.  
  172. import javax.persistence.*;
  173. import javax.validation.constraints.NotNull;
  174. import java.util.Date;
  175. import java.util.EnumSet;
  176. import java.util.Set;
  177.  
  178. import static ru.javawebinar.topjava.util.MealsUtil.DEFAULT_CALORIES_PER_DAY;
  179.  
  180. @NamedQueries({
  181. @NamedQuery(name = User.DELETE, query = "DELETE FROM User u WHERE u.id=:id"),
  182. @NamedQuery(name = User.BY_EMAIL, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles WHERE u.email=?1"),
  183. @NamedQuery(name = User.ALL_SORTED, query = "SELECT u FROM User u LEFT JOIN FETCH u.roles ORDER BY u.name, u.email"),
  184. })
  185. @Entity
  186. @Table(name = "users", uniqueConstraints = {@UniqueConstraint(columnNames = "email", name = "users_unique_email_idx")})
  187. public class User extends NamedEntity {
  188.  
  189. public static final String DELETE = "User.delete";
  190. public static final String BY_EMAIL = "User.getByEmail";
  191. public static final String ALL_SORTED = "User.getAllSorted";
  192.  
  193. @Column(name = "email", nullable = false, unique = true)
  194. @Email
  195. @NotBlank
  196. private String email;
  197.  
  198. @Column(name = "password", nullable = false)
  199. @NotBlank
  200. @Length(min = 5)
  201. private String password;
  202.  
  203. @Column(name = "enabled", nullable = false, columnDefinition = "bool default true")
  204. private boolean enabled = true;
  205.  
  206. @Column(name = "registered", columnDefinition = "timestamp default now()")
  207. @NotNull
  208. private Date registered = new Date();
  209.  
  210. @Enumerated(EnumType.STRING)
  211. @CollectionTable(name = "user_roles", joinColumns = @JoinColumn(name = "user_id"))
  212. @Column(name = "role")
  213. @ElementCollection(fetch = FetchType.EAGER)
  214. private Set<Role> roles;
  215.  
  216. @Column(name = "calories_per_day", columnDefinition = "int default 2000")
  217. @Range(min = 10, max = 10000)
  218. private int caloriesPerDay = DEFAULT_CALORIES_PER_DAY;
  219.  
  220. public User() {
  221. }
  222.  
  223. public User(User u) {
  224. this(u.getId(), u.getName(), u.getEmail(), u.getPassword(), u.getCaloriesPerDay(), u.isEnabled(), u.getRoles());
  225. }
  226.  
  227. public User(Integer id, String name, String email, String password, Role role, Role... roles) {
  228. this(id, name, email, password, DEFAULT_CALORIES_PER_DAY, true, EnumSet.of(role, roles));
  229. }
  230.  
  231. public User(Integer id, String name, String email, String password, int caloriesPerDay, boolean enabled, Set<Role> roles) {
  232. super(id, name);
  233. this.email = email;
  234. this.password = password;
  235. this.caloriesPerDay = caloriesPerDay;
  236. this.enabled = enabled;
  237. this.roles = roles;
  238. }
  239.  
  240. public String getEmail() {
  241. return email;
  242. }
  243.  
  244. public void setEmail(String email) {
  245. this.email = email;
  246. }
  247.  
  248. public void setPassword(String password) {
  249. this.password = password;
  250. }
  251.  
  252. public Date getRegistered() {
  253. return registered;
  254. }
  255.  
  256. public void setRegistered(Date registered) {
  257. this.registered = registered;
  258. }
  259.  
  260. public void setEnabled(boolean enabled) {
  261. this.enabled = enabled;
  262. }
  263.  
  264. public int getCaloriesPerDay() {
  265. return caloriesPerDay;
  266. }
  267.  
  268. public void setCaloriesPerDay(int caloriesPerDay) {
  269. this.caloriesPerDay = caloriesPerDay;
  270. }
  271.  
  272. public boolean isEnabled() {
  273. return enabled;
  274. }
  275.  
  276. public Set<Role> getRoles() {
  277. return roles;
  278. }
  279.  
  280. public String getPassword() {
  281. return password;
  282. }
  283.  
  284. @Override
  285. public String toString() {
  286. return "User{" +
  287. "id=" + id +
  288. ", email=" + email +
  289. ", name=" + name +
  290. ", enabled=" + enabled +
  291. ", roles=" + roles +
  292. ", caloriesPerDay=" + caloriesPerDay +
  293. '}';
  294. }
  295. }
  296.  
  297. 11-Aug-2017 17:57:46.341 SEVERE [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log StandardWrapper.Throwable
  298. 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
  299. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1628)
  300. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
  301. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
  302. at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
  303. at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
  304. at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
  305. at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
  306. at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1078)
  307. at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:857)
  308. at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)
  309. at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
  310. at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93)
  311. at ru.javawebinar.topjava.web.MealServlet.init(MealServlet.java:31)
  312. at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
  313. at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
  314. at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)
  315. at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4921)
  316. at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5231)
  317. at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
  318. at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
  319. at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
  320. at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
  321. at org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1702)
  322. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  323. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  324. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  325. at java.lang.reflect.Method.invoke(Method.java:498)
  326. at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
  327. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  328. at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  329. at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456)
  330. at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405)
  331. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  332. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  333. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  334. at java.lang.reflect.Method.invoke(Method.java:498)
  335. at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:300)
  336. at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
  337. at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
  338. at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
  339. at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
  340. at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
  341. at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
  342. at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
  343. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  344. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  345. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  346. at java.lang.reflect.Method.invoke(Method.java:498)
  347. at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:324)
  348. at sun.rmi.transport.Transport$1.run(Transport.java:200)
  349. at sun.rmi.transport.Transport$1.run(Transport.java:197)
  350. at java.security.AccessController.doPrivileged(Native Method)
  351. at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
  352. at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
  353. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
  354. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
  355. at java.security.AccessController.doPrivileged(Native Method)
  356. at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
  357. at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
  358. at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
  359. at java.lang.Thread.run(Thread.java:745)
  360. Caused by: org.hibernate.DuplicateMappingException: Duplicate query mapping User.getAllSorted
  361. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.checkQueryName(InFlightMetadataCollectorImpl.java:521)
  362. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.applyNamedQuery(InFlightMetadataCollectorImpl.java:515)
  363. at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.addNamedQuery(InFlightMetadataCollectorImpl.java:511)
  364. at org.hibernate.cfg.annotations.QueryBinder.bindQuery(QueryBinder.java:76)
  365. at org.hibernate.cfg.annotations.QueryBinder.bindQueries(QueryBinder.java:218)
  366. at org.hibernate.cfg.AnnotationBinder.bindQueries(AnnotationBinder.java:360)
  367. at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:535)
  368. at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:249)
  369. at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
  370. at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
  371. at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:858)
  372. at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:885)
  373. at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:60)
  374. at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:353)
  375. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:370)
  376. at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:359)
  377. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
  378. at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
  379. ... 60 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement