Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package model;
- import javax.persistence.*;
- @Entity
- @Table(name = "spitter")
- public class Spitter {
- private static long schet = 0;
- @Id
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- @Column(name = "iduser")
- private Long id;
- private String username;
- private String password;
- private String fullName;
- public Spitter() {
- }
- public Spitter(String username, String password, String fullName) {
- this.id=schet++;
- this.username = username;
- this.password = password;
- this.fullName = fullName;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public void setFullName(String fullName) {
- this.fullName = fullName;
- }
- public Long getId() {
- return id;
- }
- public String getUsername() {
- return username;
- }
- public String getPassword() {
- return password;
- }
- public String getFullName() {
- return fullName;
- }
- @Override
- public String toString() {
- return "Spitter{" +
- "id=" + id +
- ", username='" + username + ''' +
- ", password='" + password + ''' +
- ", fullName='" + fullName + ''' +
- '}';
- }
- }
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- 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-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.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-3.0.xsd">
- <context:annotation-config />
- <context:component-scan
- base-package="dao" />
- <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="persistenceUnitName" value="myPersistenceUnit" />
- <property name="packagesToScan" >
- <list>
- <value>model</value>
- <value>dao</value>
- </list>
- </property>
- <property name="jpaVendorAdapter" ref="jpaVendorAdapter" />
- </bean>
- <bean id="jpaVendorAdapter"
- class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
- <property name="database" value="HSQL" />
- <property name="showSql" value="true"/>
- <property name="generateDdl" value="false"/>
- <property name="databasePlatform"
- value="org.hibernate.dialect.HSQLDialect" />
- </bean>
- <bean id="dataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName"
- value="org.hsqldb.jdbcDriver" />
- <property name="url"
- value="jdbc:hsqldb:file:C:/DataBase/HSQL/SIA_HSQLDB.tmp/sia_db" />
- <property name="username" value="sa" />
- <property name="password" value="" />
- </bean>
- <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor"/>
- <tx:annotation-driven transaction-manager="txManager"/>
- <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">
- <property name="sessionFactory">
- <ref local="sessionFactory"/>
- </property>
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan">
- <list>
- <value>dao</value>
- <value>model</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="dialect">org.hibernate.dialect.HSQLDialect</prop>
- </props>
- </property>
- </bean>
- </beans>
- <?xml version="1.0" encoding="UTF-8"?>
- <persistence xmlns="http://java.sun.com/xml/ns/persistence"
- version="1.0">
- <persistence-unit name="spitter">
- <class>model.Spitter</class>
- <properties>
- <property name="toplink.jdbc.driver"
- value="org.hsqldb.jdbcDriver" />
- <property name="toplink.jdbc.url"
- value="jdbc:hsqldb:file:C:/DataBase/HSQL/SIA_HSQLDB.tmp/sia_db" />
- <property name="toplink.jdbc.user"
- value="sa" />
- <property name="toplink.jdbc.password"
- value="" />
- </properties>
- </persistence-unit>
- </persistence>
- package dao;
- import model.Spitter;
- import org.springframework.stereotype.Repository;
- import org.springframework.transaction.annotation.Transactional;
- import javax.persistence.EntityManager;
- import javax.persistence.PersistenceContext;
- @Repository("jparep")
- @Transactional
- public class JPARepositoryImpl implements Rep {
- private static final String RECENT_SPITTLES =
- "SELECT s FROM Spittle s";
- private static final String ALL_SPITTERS =
- "SELECT s FROM Spitter s";
- private static final String SPITTER_FOR_USERNAME =
- "SELECT s FROM Spitter s WHERE s.username = :username";
- private static final String SPITTLES_BY_USERNAME =
- "SELECT s FROM Spittle s WHERE s.spitter.username = :username";
- @PersistenceContext
- private EntityManager em; // Для внедрения EntityManager
- @Transactional
- public void addSpitter(Spitter spitter) {
- em.persist(spitter); // Использование EntityManager
- }
- @Transactional
- public Spitter getSpitterById(long id) {
- return em.find(Spitter.class, id); // Использование EntityManager
- }
- @Transactional
- public void saveSpitter(Spitter spitter) {
- em.merge(spitter); // Использование EntityManager
- }
- }
- DROP TABLE IF EXISTS SPITTER;
- --USER TABLE
- CREATE TABLE IF NOT EXISTS SPITTER (
- IDUSER INT GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1)NOT NULL PRIMARY KEY,
- USERNAME VARCHAR(255) NOT NULL,
- PASSWORD VARCHAR(255) NOT NULL,
- FULLNAME VARCHAR(255) NOT NULL
- )
- INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Roma','1','Luch');
- INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Kate','2','Luch');
- INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Yaro','3','Luch');
- INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Alin','4','Luch');
- INSERT INTO SPITTER (USERNAME, PASSWORD, FULLNAME) VALUES ('Alex','5','Luch');
- ApplicationContext context = new ClassPathXmlApplicationContext("Spring_JPA.xml");
- Rep test = (Rep)context.getBean("jparep");
- test.addSpitter(new Spitter("yaspring","on","ay"));
- Exception in thread "main" javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Spitter
- at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1763)
- at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1677)
- at org.hibernate.jpa.spi.AbstractEntityManagerImpl.convert(AbstractEntityManagerImpl.java:1683)
- at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1187)
- 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.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:347)
- at com.sun.proxy.$Proxy17.persist(Unknown Source)
- 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.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:298)
- at com.sun.proxy.$Proxy17.persist(Unknown Source)
- at dao.JPARepositoryImpl.addSpitter(JPARepositoryImpl.java:28)
- 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.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:333)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
- at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
- at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:282)
- at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
- at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
- at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
- at com.sun.proxy.$Proxy18.addSpitter(Unknown Source)
- at Main.main(Main.java:45)
- 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 com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
- Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: model.Spitter
- at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:139)
- at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:75)
- at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:811)
- at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:784)
- at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:789)
- at org.hibernate.jpa.spi.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:1181)
- ... 32 more
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement