Ich versuche Spring Boot (Version 1.4.2) zu konfigurieren, um meine lokale MySQL-Datenbank zu verwenden, aber mit meiner Konfiguration stimmt etwas nicht. Könnten Sie sich bitte dieses sehr einfache Beispiel ansehen und mir sagen, was vor sich geht?Spring Boot lädt keine Entitäten aus der lokalen MySQL-Datenbank
Ich habe alle erforderlichen Abhängigkeiten Ort:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
Meine Einheit:
@Entity
@Table(name = "greetings")
public class Greeting {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "greeting_id")
private long id;
@Column(name = "text")
private String text;
// getters and setters here
}
Repository:
@Repository
public interface GreetingRepository extends JpaRepository<Greeting, Long> {
}
Controller:
@RestController
@RequestMapping("/hello")
public class GreetingsController {
@Autowired
private GreetingRepository repo;
@RequestMapping(method = RequestMethod.GET)
public Collection<Greeting> getGreetings() {
return repo.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public Greeting getGreeting(@PathVariable Long id) {
return repo.findOne(id);
}
}
application.properties:
spring.jpa.hibernate.ddl-auto=create-drop
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.datasource.url=jdbc:mysql://localhost/example
spring.datasource.username=root
spring.datasource.password=secret
spring.datasource.driverClassName=com.mysql.jdbc.Driver
Es ist eine MySQL-Datenbank auf localhost namens 'Beispiel' mit der folgenden Tabelle ausgeführt wird (und ein paar Platten, die ich dort eingefügt):
mysql> describe greetings;
+-------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+--------------+------+-----+---------+----------------+
| greeting_id | bigint(20) | NO | PRI | NULL | auto_increment |
| text | varchar(255) | YES | | NULL | |
+-------------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
EDIT: Ich korrigierte meinen Controller und aktualisierte meine Frage. Das Problem ist, dass meine Anwendung In-Memory-Datenspeicher anstelle meiner MySQL-Datenbank verwendet. Wenn ich einen POST-Endpunkt erstelle und eine neue Entität in die Datenbank einfüge, kann ich sie abrufen, aber sie scheint sich von meiner bestehenden Datenbank zu unterscheiden, da ich keine Daten von dort erhalte.
EDIT2: gelöst durch spring.jpa.hibernate.ddl-auto=update
True, ich hatte diese Fehler drin. Jetzt bekomme ich keine Ausnahmen, aber es lädt überhaupt keine Daten. Gibt nur leere Mengen zurück, obwohl die Datenbank gefüllt ist. – Smajl
Stimmen Sie vollständig mit dem primitiven Wrapper-Objekt für die ID überein. Primitive sollten vermieden werden, siehe hier für eine Erklärung: http://stackoverflow.com/questions/3535791/primitive-or-wrapper-for-hibernate-primary-keys –
Das war der Fehler! Danke, dass du dir die Zeit nimmst und diese grundlegenden Dinge erklärst. Es ist schwierig, den Fehler auf den ersten Blick zu erkennen. – Smajl