title: Spring Boot Data JPA - Not saving entities to the database
body: <p>I have a Spring Boot application using JPA that has 2 datasources, 1 for DB2 and 1 for SQL Server.</p>
  
  <p>When I try to save an entity to SQL Server, no error is thrown, but the entity is not persisted to the database.  I do not see an insert being generated in the log.</p>
  
  <p>Thanks in advance</p>
  
  <p>Here is the code I execute to try and save the entity.
  @Component</p>
  
  <pre><code>public class TestSave {
  
      @Autowired
      private BeercupMessageLogRepository repository;
  
  
      @Scheduled(fixedRate = 500000)
      public void reportCurrentTime() {
          System.out.println("Testing Save ... ");
  
          // Save the message in the transaction log - TypeId = 1 for Quote
          BeercupMessageLog beercupMessage = new BeercupMessageLog(1,"THIS IS A TEST ...", false);
          beercupMessage = repository.save(beercupMessage);
          System.out.println("Testing save complete ....");
  
      }
  }
  </code></pre>
  
  <p>Here is the sql Server configuration. <br></p>
  
  <pre><code>@Configuration
  @EnableTransactionManagement
  @EnableJpaRepositories(basePackages="com.xxx.beverage.repository.sqlserver",entityManagerFactoryRef = "entityManagerFactory", transactionManagerRef = "transactionManager")
  public class sqlserverConfiguration {
  
      @Bean(name="datasource")
      @Primary
      @ConfigurationProperties(prefix = "sqlserver.datasource")
      public DataSource sqlserverDataSource() {
          return DataSourceBuilder.create().build();
      }
  
      @PersistenceContext(unitName="primary")
      @Primary
      @Bean(name = "entityManagerFactory")
      public LocalContainerEntityManagerFactoryBean sqlserverEntityManagerFactory(EntityManagerFactoryBuilder builder) {
           return builder.dataSource(sqlserverDataSource()).persistenceUnit("sqlServer").properties(jpaProperties())
                     .packages("com.boelter.beverage.model.sqlserver").build();     }
  
      private Map&lt;String, Object&gt; jpaProperties() {
           Map&lt;String, Object&gt; props = new HashMap&lt;&gt;();
           props.put("spring.jpa.hibernate.naming-strategy","org.hibernate.cfg.DefaultNamingStrategy");
           props.put("hibernate.default_schema","dbo");
           return props;
       }
  }
  </code></pre>
  
  <p>Here is the SQL Server Repository</p>
  
  <p>public interface BeercupMessageLogRepository extends </p>
  
  <pre><code>CrudRepository&lt;BeercupMessageLog, Long&gt; {
  
      BeercupMessageLog findOne(Long id);
      List&lt;BeercupMessageLog&gt; findByMessageTypeId(Long messageTypeId);
      List&lt;BeercupMessageLog&gt; findAll();
  </code></pre>
  
  <p>Here is the DB2 configuration.</p>
  
  <pre><code>@Configuration
  @EnableTransactionManagement
  @EnableJpaRepositories(basePackages="com.boelter.beverage.repository.db2",entityManagerFactoryRef = "entityManagerFactory
  2", transactionManagerRef = "transactionManager2")
  public class db2Configuration {
  
      @Bean(name="db2DataSource")
      @ConfigurationProperties(prefix = "db2.datasource")
      public DataSource db2DataSource() {
          return DataSourceBuilder.create().build();
      }
  
      @PersistenceContext(unitName="secondary")
      @Bean(name = "entityManagerFactory2")
      public LocalContainerEntityManagerFactoryBean db2EntityManagerFactory(EntityManagerFactoryBuilder builder) {
           return builder.dataSource(db2DataSource()).persistenceUnit("db2").properties(jpaProperties())
                     .packages("com.boelter.beverage.model.db2").build();     }
  
      private Map&lt;String, Object&gt; jpaProperties() {
           Map&lt;String, Object&gt; props = new HashMap&lt;&gt;();
           props.put("spring.jpa.hibernate.naming-strategy","org.hibernate.cfg.DefaultNamingStrategy");
           //props.put("spring.jpa.hibernate.naming-strategy","org.hibernate.cfg.ImprovedNamingStrategy");
           //props.put("spring.jpa.properties.hibernate.default_schema","R3QASDATA");
           //props.put("spring.jpa.show-sql","true");
           return props;
       }
  }
  </code></pre>
  
  <p>Here is the entity.</p>
  
  <pre><code>package com.boelter.beverage.model.sqlserver;
  
  import java.util.Date;
  
  import javax.persistence.Column;
  import javax.persistence.Entity;
  import javax.persistence.GeneratedValue;
  import javax.persistence.GenerationType;
  import javax.persistence.Id;
  import javax.persistence.Table;
  
  import org.springframework.transaction.annotation.Transactional;
  @Table (name="[BeercupMessageLog]")
  @Entity
  @Transactional
  public class BeercupMessageLog {
  
      @Id
      @GeneratedValue(strategy=GenerationType.AUTO)
      private long    messageId;
  
      @Column(name="MessageTypeId", nullable = false)
      private long    messageTypeId;
  
      @Column(name="Processed", nullable = false)
      private boolean processed;
  
      // Set updatable and insertable to false so JPA does not try to pass a value.  The DB has a default
      // of the current date if no value is passed
      @Column(name="MessageDate", updatable=false, insertable=false)
      private Date    messageDate;
  
      @Column(name="MessageText", nullable = false)
      private String  messageText;
  
      protected BeercupMessageLog() {}
  
      public BeercupMessageLog(long messageTypeId, String messageText, boolean processed) {
          this.messageTypeId = messageTypeId;
          this.messageText = messageText;
          this.processed = processed;
      }
  
      /**
       * @return the messageId
       */
      public long getMessageId() {
          return messageId;
      }
  
      /**
       * @param messageId the messageId to set
       */
      public void setMessageId(long messageId) {
          this.messageId = messageId;
      }
  
      /**
       * @return the messageTypeId
       */
      public long getMessageTypeId() {
          return messageTypeId;
      }
  
      /**
       * @param messageTypeId the messageTypeId to set
       */
      public void setMessageTypeId(long messageTypeId) {
          this.messageTypeId = messageTypeId;
      }
  
      /**
       * @return the messageDate
       */
      public Date getMessageDate() {
          return messageDate;
      }
  
      /**
       * @param messageDate the messageDate to set
       */
      public void setMessageDate(Date messageDate) {
          this.messageDate = messageDate;
      }
  
      /**
       * @return the processed
       */
      public boolean isProcessed() {
          return processed;
      }
  
      /**
       * @param processed the processed to set
       */
      public void setProcessed(boolean processed) {
          this.processed = processed;
      }
  
      /**
       * @return the messageText
       */
      public String getMessageText() {
          return messageText;
      }
  
      /**
       * @param messageText the messageText to set
       */
      public void setMessageText(String messageText) {
          this.messageText = messageText;
      }
  
      @Override
      public String toString() {
          return String.format(
                  "BeercupMessage[id=%d, typeId=%d, message='%s']",
                  messageId, messageTypeId, messageText);
      }
  
  }
  </code></pre>