Comment persistent lors de l'utilisation de Spring Boot avec JPA

Je suis habitué à l'utilisation de Spring Roo pour générer mes entités et d'avoir la poignée de l'injection de l'entityManager ainsi que l'persistent et d'autres méthodes par AspectJ classes.
Maintenant, je suis en train d'utiliser le Printemps de Démarrage à faire quelque chose de simple qui permettra d'écrire des choses à la base de données ...

@Entity
@Table(name = "account")
public class Account { 

  transient EntityManager entityManager;

  @Id
  @GeneratedValue
  private Long id;

  @Column(name = "username", nullable = false, unique = true)
  private String username;

  @Column(name = "password", nullable = false)
  private String password;

  ... getters and setters

  @Transactional
  public void persist() {
    if (this.entityManager == null) this.entityManager = entityManager();
    this.entityManager.persist(this);
  }

  @Transactional
  public Account merge() {
    if (this.entityManager == null) this.entityManager = entityManager();
    Account merged = this.entityManager.merge(this);
    this.entityManager.flush();
    return merged;
  }

Quand je suis à l'appel de persister ou de fusion, l'entityManager est évidemment nulle.

J'ai aussi essayé d'ajouter implements CrudRepository<Account, Long> à la Account de classe à voir, il va me donner cette fonctionnalité via une Implémentation par Défaut, mais ce que j'obtiens est tout simplement vide classes qui doit être rempli.

J'ai eu un coup d'oeil au Printemps de Démarrage docs, ils couvrent très brièvement en omettant juste assez de détails pour de sorte qu'il n'est pas évident ce que je suis absent.

J'ai une Demande à la classe qui démarre l'application:

@Configuration
@ComponentScan
@EnableAutoConfiguration
public class Application {

  public static void main(String[] args) throws Exception {
    SpringApplication.run(Application.class, args);
  }

}

Mon fichier de propriétés ressemble à ceci:

spring.application.name: Test Application

spring.datasource.url: jdbc:mysql://localhost/test
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update

Cette base de données est automatiquement créé grâce à la ddl-auto=update propriété

Est-ce le bon moyen de conserver des entités au Printemps de Démarrage + JPA, et si ce que j'ai fait est correct jusqu'à présent, comment puis-je "autowire" ou auto-créer un entityManager?

OriginalL'auteur Jan Vladimir Mostert | 2016-03-10