Ich habe seit Tagen mit der Konfiguration von Hibernate gekämpft und es auf WildFly ausgeführt.WildFly + Hibernate
Hier ist mein Code:
META-INF/persistence.xml
<persistence version="1.0"
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">
<persistence-unit name="blog" transaction-type="JTA">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<properties>
<property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/blog?createDatabaseIfNotExist=true"/>
<property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
<property name="hibernate.connection.username" value="abc"/>
<property name="hibernate.connection.password" value="abc"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
<property name="hibernate.hbm2ddl.auto" value="create"/>
<property name="hibernate.show_sql" value="true"/>
<property name="jboss.as.jpa.providerModule" value="org.hibernate:5.0"/>
</properties>
</persistence-unit>
pom.xml
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>org.hibernate.javax.persistence</groupId>
<artifactId>hibernate-jpa-2.1-api</artifactId>
<version>1.0.0.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.2.2.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
Benutzer:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@OneToMany(mappedBy = "user")
private Set<Post> posts;
}
Wenn ich meine Hauptseite lade, wird keine Datenbank erstellt.
Außerdem möchte ich einen Benutzer persistieren.
@Stateless
public class UserRepositoryImpl implements UserRepository {
@PersistenceContext(unitName = "blog")
private EntityManager entityManager;
public void create(User user) {
this.entityManager.persist(user);
}
}
Es wird keine Datenbank erstellt und der Entitätsmanager ist null. Was muss ich konfigurieren, damit es ausgeführt wird? Ich verwende IntelliJ zum Testen.
Wenn Sie als Transaktionstyp 'JTA' verwenden, sollten sich die Datenbankverbindungsdetails nicht in der Datei' persistence.xml' befinden. Sie sollten in der 'standalone.xml' von Ihrer WilfFly sein. Dann referenziere die 'persistence.xml' einfach. –
Ich denke, etwas anderes ist grundlegend gebrochen. Ich kann kein gutes Tutorial finden, wie es geht. Ich verlasse es für jetzt. Danke –
Das Problem liegt wahrscheinlich in der Art, wie Sie das UserRepositoryImpl verwenden. Wie in: der Code, den du hier nicht angezeigt hast. Anscheinend wird der JEE-Container nicht ausgelöst, um die EntityManager-Instanz tatsächlich zu injizieren und somit den Persistenzkontext zu starten, was ich nur annehmen kann, dass das USerRepositoryImpl nicht als eine richtige EJB-Instanz initialisiert wird. – Gimby