Advertisement
Guest User

Untitled

a guest
Jul 5th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.17 KB | None | 0 0
  1. package model;
  2.  
  3. import javax.persistence.*;
  4.  
  5.  
  6. @Entity
  7. @Table(name = "spitter")
  8. public class Spitter {
  9. private static long schet = 0;
  10. @Id
  11. @GeneratedValue(strategy = GenerationType.IDENTITY)
  12. @Column(name = "iduser")
  13. private Long id;
  14. private String username;
  15. private String password;
  16. private String fullName;
  17.  
  18. public Spitter() {
  19. }
  20.  
  21. public Spitter(String username, String password, String fullName) {
  22. this.id=schet++;
  23. this.username = username;
  24. this.password = password;
  25. this.fullName = fullName;
  26. }
  27.  
  28. public void setId(Long id) {
  29. this.id = id;
  30. }
  31.  
  32. public void setUsername(String username) {
  33. this.username = username;
  34. }
  35.  
  36. public void setPassword(String password) {
  37. this.password = password;
  38. }
  39.  
  40. public void setFullName(String fullName) {
  41. this.fullName = fullName;
  42. }
  43.  
  44. public Long getId() {
  45. return id;
  46. }
  47.  
  48. public String getUsername() {
  49. return username;
  50. }
  51.  
  52. public String getPassword() {
  53. return password;
  54. }
  55.  
  56. public String getFullName() {
  57. return fullName;
  58. }
  59.  
  60. @Override
  61. public String toString() {
  62. return "Spitter{" +
  63. "id=" + id +
  64. ", username='" + username + ''' +
  65. ", password='" + password + ''' +
  66. ", fullName='" + fullName + ''' +
  67. '}';
  68. }
  69. }
  70.  
  71. <?xml version="1.0" encoding="UTF-8"?>
  72. <beans xmlns="http://www.springframework.org/schema/beans"
  73. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  74. xmlns:context="http://www.springframework.org/schema/context"
  75. xmlns:jdbc="http://www.springframework.org/schema/jdbc"
  76. xmlns:tx="http://www.springframework.org/schema/tx"
  77. xsi:schemaLocation="http://www.springframework.org/schema/beans
  78. http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  79. http://www.springframework.org/schema/context
  80. http://www.springframework.org/schema/context/spring-context-3.0.xsd
  81. http://www.springframework.org/schema/jdbc
  82. http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
  83. http://www.springframework.org/schema/tx
  84. http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
  85.  
  86. <context:annotation-config />
  87.  
  88. <context:component-scan
  89. base-package="dao" />
  90.  
  91. <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  92. <property name="dataSource" ref="dataSource" />
  93.  
  94. <property name="persistenceUnitName" value="myPersistenceUnit" />
  95. <property name="packagesToScan" >
  96. <list>
  97. <value>model</value>
  98. <value>dao</value>
  99. </list>
  100. </property>
  101.  
  102. <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
  103. </bean>
  104.  
  105. <bean id="jpaVendorAdapter"
  106. class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
  107. <property name="database" value="HSQL" />
  108. <property name="showSql" value="true"/>
  109. <property name="generateDdl" value="false"/>
  110. <property name="databasePlatform"
  111. value="org.hibernate.dialect.HSQLDialect" />
  112. </bean>
  113.  
  114. <bean id="dataSource"
  115. class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  116. <property name="driverClassName"
  117. value="org.hsqldb.jdbcDriver" />
  118. <property name="url"
  119. value="jdbc:hsqldb:file:C:/DataBase/HSQL/SIA_HSQLDB.tmp/sia_db" />
  120. <property name="username" value="sa" />
  121. <property name="password" value="" />
  122. </bean>
  123.  
  124. <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
  125.  
  126. <tx:annotation-driven transaction-manager="txManager"/>
  127.  
  128.  
  129. <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
  130. <property name="sessionFactory">
  131. <ref local="sessionFactory"/>
  132. </property>
  133. </bean>
  134.  
  135. <bean id="sessionFactory"
  136. class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
  137. <property name="dataSource" ref="dataSource" />
  138. <property name="packagesToScan">
  139. <list>
  140. <value>dao</value>
  141. <value>model</value>
  142. </list>
  143. </property>
  144.  
  145. <property name="hibernateProperties">
  146. <props>
  147. <prop key="dialect">org.hibernate.dialect.HSQLDialect</prop>
  148. </props>
  149. </property>
  150. </bean>
  151. </beans>
  152.  
  153. <?xml version="1.0" encoding="UTF-8"?>
  154. <persistence xmlns="http://java.sun.com/xml/ns/persistence"
  155. version="1.0">
  156. <persistence-unit name="spitter">
  157. <class>model.Spitter</class>
  158. <properties>
  159. <property name="toplink.jdbc.driver"
  160. value="org.hsqldb.jdbcDriver" />
  161. <property name="toplink.jdbc.url"
  162. value="jdbc:hsqldb:file:C:/DataBase/HSQL/SIA_HSQLDB.tmp/sia_db" />
  163. <property name="toplink.jdbc.user"
  164. value="sa" />
  165. <property name="toplink.jdbc.password"
  166. value="" />
  167. </properties>
  168. </persistence-unit>
  169. </persistence>
  170.  
  171. package dao;
  172.  
  173. import model.Spitter;
  174. import org.springframework.stereotype.Repository;
  175. import org.springframework.transaction.annotation.Transactional;
  176.  
  177. import javax.persistence.EntityManager;
  178. import javax.persistence.PersistenceContext;
  179.  
  180. @Repository("jparep")
  181. @Transactional
  182. public class JPARepositoryImpl implements Rep {
  183. private static final String RECENT_SPITTLES =
  184. "SELECT s FROM Spittle s";
  185. private static final String ALL_SPITTERS =
  186. "SELECT s FROM Spitter s";
  187. private static final String SPITTER_FOR_USERNAME =
  188. "SELECT s FROM Spitter s WHERE s.username = :username";
  189. private static final String SPITTLES_BY_USERNAME =
  190. "SELECT s FROM Spittle s WHERE s.spitter.username = :username";
  191. @PersistenceContext
  192. private EntityManager em; // Для внедрения EntityManager
  193. @Transactional
  194. public void addSpitter(Spitter spitter) {
  195. em.persist(spitter); // Использование EntityManager
  196. }
  197.  
  198. @Transactional
  199. public Spitter getSpitterById(long id) {
  200. return em.find(Spitter.class, id); // Использование EntityManager
  201. }
  202. @Transactional
  203. public void saveSpitter(Spitter spitter) {
  204. em.merge(spitter); // Использование EntityManager
  205. }
  206. }
  207.  
  208. DROP TABLE IF EXISTS SPITTER;
  209.  
  210. --USER TABLE
  211. CREATE TABLE IF NOT EXISTS SPITTER (
  212. IDUSER INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1)NOT NULL PRIMARY KEY,
  213. USERNAME VARCHAR(255) NOT NULL,
  214. PASSWORD VARCHAR(255) NOT NULL,
  215. FULLNAME VARCHAR(255) NOT NULL
  216. )
  217.  
  218. INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Roma','1','Luch');
  219. INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Kate','2','Luch');
  220. INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Yaro','3','Luch');
  221. INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Alin','4','Luch');
  222. INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Alex','5','Luch');
  223.  
  224. ApplicationContext context = new ClassPathXmlApplicationContext("Spring_JPA.xml");
  225. Rep test = (Rep)context.getBean("jparep");
  226. test.addSpitter(new Spitter("yaspring","on","ay"));
  227.  
  228. Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Spitter
  229. at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
  230. at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
  231. at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
  232. at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1187)
  233. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  234. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  235. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  236. at java.lang.reflect.Method.invoke(Method.java:498)
  237. at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:347)
  238. at com.sun.proxy.$Proxy17.persist(Unknown Source)
  239. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  240. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  241. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  242. at java.lang.reflect.Method.invoke(Method.java:498)
  243. at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
  244. at com.sun.proxy.$Proxy17.persist(Unknown Source)
  245. at dao.JPARepositoryImpl.addSpitter(JPARepositoryImpl.java:28)
  246. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  247. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  248. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  249. at java.lang.reflect.Method.invoke(Method.java:498)
  250. at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
  251. at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
  252. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
  253. at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
  254. at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
  255. at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
  256. at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
  257. at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
  258. at com.sun.proxy.$Proxy18.addSpitter(Unknown Source)
  259. at Main.main(Main.java:45)
  260. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  261. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  262. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  263. at java.lang.reflect.Method.invoke(Method.java:498)
  264. at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
  265. Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Spitter
  266. at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:139)
  267. at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75)
  268. at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811)
  269. at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784)
  270. at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789)
  271. at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181)
  272. ... 32 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement