Note that there are some explanatory texts on larger screens.

plurals
  1. POEntity manager does not persist data in the DB
    primarykey
    data
    text
    <p>Trough the entity manager I'm tryng to persist the entity in the database but I don manage to persists it. Here goes my configuration.</p> <p>I have this Entity:</p> <pre><code>@Entity @Table(name = "User") public class UserModel implements Serializable, ModelItem { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private Integer id; @Column(nullable = false) private String username; @Column(nullable = false) private String password; @Column(nullable = false) private String name; private String surname; private String notes; private String cellphone; @Column(nullable = false) private String email; private Boolean enabled; //get and set methods ..... } </code></pre> <p>and my import bean that does the persistence:</p> <pre><code>@Repository public class ImportServiceImpl implements ImportService { @PersistenceContext protected EntityManager entityManager; @Transactional public boolean importExample() { User u= new User(); u.setUsername("username"); u.setPassword("password"); u.setName("name"); u.setEmail("email"); entityManager.persist(u); } } </code></pre> <p>The spring configuration for the entity manager and the db connction:</p> <pre><code>&lt;tx:annotation-driven transaction-manager="transactionManager" /&gt; &lt;bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" /&gt; &lt;tx:annotation-driven /&gt; &lt;bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/&gt; &lt;bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"&gt; &lt;property name="dataSource" ref="dataSource" /&gt; &lt;property name="jpaVendorAdapter"&gt; &lt;bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"&gt; &lt;property name="showSql" value="true" /&gt; &lt;!-- Prints used SQL to stdout --&gt; &lt;property name="generateDdl" value="true" /&gt; &lt;!-- Generates tables. --&gt; &lt;property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" /&gt; &lt;/bean&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; &lt;property name="driverClassName" value="com.mysql.jdbc.Driver"/&gt; &lt;property name="url"&gt; &lt;value&gt;${db.url}&lt;/value&gt; &lt;/property&gt; &lt;property name="username"&gt; &lt;value&gt;${db.username}&lt;/value&gt; &lt;/property&gt; &lt;property name="password"&gt; &lt;value&gt;${db.password}&lt;/value&gt; &lt;/property&gt; &lt;/bean&gt; &lt;bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"&gt; &lt;property name="entityManagerFactory" ref="entityManagerFactory"/&gt; &lt;property name="dataSource" ref="dataSource"/&gt; &lt;/bean&gt; </code></pre> <p>and my persistence.xml</p> <pre><code>&lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0"&gt; &lt;persistence-unit name="application" transaction-type="RESOURCE_LOCAL"&gt; &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt; &lt;properties&gt; &lt;property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/testdata"/&gt; &lt;property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/&gt; &lt;property name="hibernate.connection.password" value="password"/&gt; &lt;property name="hibernate.connection.username" value="root"/&gt; &lt;property name="hibernate.hbm2ddl.auto" value="create-drop"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt; </code></pre> <p>So when I run my example I don't get any error but entity is not persisted. I also tryied to add entityManager.flush() after persist but in this case i get this error:</p> <pre><code>javax.persistence.TransactionRequiredException: no transaction is in progress at org.hibernate.ejb.AbstractEntityManagerImpl.flush(AbstractEntityManagerImpl.java:793) </code></pre> <p>So I'm thinking my Transactional bean is not well binded to the method, but I can not understand the reason. Somebody knows why?</p> <p>I also noticed in STS that for this transaction are generated 2 beans with same data it looks strange (I don't know if it is a bug of STS or is a problem in my configuration that creates 2 beans):</p> <p><img src="https://i.stack.imgur.com/fxx83.png" alt="enter image description here"> </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload