2017-05-31 5 views
0

J'ai rencontré un très gros problème avec la création de base de données en utilisant persist.xml. Ok, je commence depuis le début. J'ai créé un projet maven (artefact -> webapp). J'ai ajouté un répertoire META-INF avec le fichier persistence.xml dans mon répertoire source comme ça:persistance.xml ne crée pas de base de données dans Intellij

<?xml version="1.0" encoding="UTF-8"?> 
<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_2_0.xsd" 
      version="2.0"> 
    <persistence-unit name="myDatabase" transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 
     <exclude-unlisted-classes>false</exclude-unlisted-classes> 
     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.jdbc.Driver" /> 
      <property name="javax.persistence.jdbc.user" value="root" /> 
      <property name="javax.persistence.jdbc.password" value="root" /> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/Lab6" /> 
      <property name="hibernate.hbm2ddl.auto" value="create" /> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> 
     </properties> 
    </persistence-unit> 
</persistence> 

Puis-je mettre un certain modèle dans mes sources java. J'ai ajouté des annotations Adéquat comme ça:

package model; 

import javax.persistence.*; 

@Entity 
@Table(name="author") 
public class Author 
{ 
    private int Id; 
    private String firstName; 
    private String lastName; 

    @Id 
    @Column(name = "id", nullable = false) 
    @GeneratedValue(strategy= GenerationType.SEQUENCE, generator="seq") 
    public int getId() { 
     return Id; 
    } 

    public void setId(int id) { 
     Id = id; 
    } 

    @Column(name = "first_name", nullable = false) 
    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    @Column(name = "last_name", nullable = false) 
    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 

Après cela, j'ajouté une classe de servlet pour se connecter à laisser le programme faire des opérations en utilisant la méthode POST. Nevermind :) Après ça, je cours le projet et ... rien ne s'est passé; programme exécuté avec succès, je peux entrer dans servlet mais la base de données n'a pas été créée. Puis j'ai commencé à chercher la solution sur un site web et rien ne m'a aidé avec mon problème. Ci-dessous est mon fichier pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>Lab6</groupId> 
    <artifactId>Lab6</artifactId> 
    <packaging>war</packaging> 
    <version>1.0-SNAPSHOT</version> 
    <name>Lab6 Maven Webapp</name> 
    <url>http://maven.apache.org</url> 

    <build> 
    <finalName>Lab6</finalName> 
    <testResources> 
     <testResource> 
     <directory>src/resources</directory> 
     <filtering>true</filtering> 
     </testResource> 
    </testResources> 

    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.6.1</version> 
     <configuration> 
      <source>1.8</source> 
      <target>1.8</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

    <dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.persistence</groupId> 
     <artifactId>persistence-api</artifactId> 
     <version>1.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate.javax.persistence</groupId> 
     <artifactId>hibernate-jpa-2.1-api</artifactId> 
     <version>1.0.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.38</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>3.0-alpha-1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>4.2.0.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>net.java.dev.glassfish</groupId> 
     <artifactId>glassfish-persistence-api</artifactId> 
     <version>b32g</version> 
    </dependency> 
    </dependencies> 
</project> 

J'ai vraiment bloqué. Jusqu'à présent, j'ai vérifié les autres versions des fournisseurs (eclipse) dans persistence.xml, et fait des changements vraiment bizarres à l'intérieur de ce fichier mais sans succès. Je vérifiais aussi le fichier de guerre. Tous les fichiers nécessaires étaient à l'intérieur (en particulier persistance.xml). FI changer ma version actuelle GlassFish du serveur à différents ceux mais cela n'a pas aidé. ((( gars reeally s'il vous plaît me aider Mon knowlage est ropably trop faible pour avoir de meilleures idées ghow pour résoudre ce problème

Merci à l'avance

+2

. ai appelé il 'perstistance.xml',' persistent.xml', et 'persistence.xml'. Vous devez copier et coller le nom du fichier car toute faute d'orthographe empêchera le bon fonctionnement. Quel est le chemin exact de 'persistence.xml' dans le fichier WAR? – ngreen

+0

désolé pour erreur dans ce nom mais je dormais presque quand j'ai écrit ceci. je vous assure que j'ai le nom propre pour persistence.xml – fOrest94

Répondre

0

il vous manque la partie de persistence.xml qui lui indique comment trouver vos classes Voici quelques options:.

<jar-file>MyLibrary.jar</jar-file> 
<class>model.Author</class> 

Quelle est l'option que vous choisirez dépendra de la façon dont votre projet est mis en place, vous