2017-05-31 4 views
0

私はpersistent.xmlを使用してデータベースを作成することに非常に大きな問題に直面しました。さて、私は始めから始まります。 私はmaven(artifact - > webapp)プロジェクトを作成しました。私はそのようなソースディレクトリにファイルpersistence.xmlを持つMETA-INFディレクトリを追加しました:persistance.xmlは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> 

私はいくつかのモデルを自分のJavaソースに入れました。私はプログラムがPOSTメソッドを使用して、いくつかの操作を行うようにする接続するためのサーブレットクラスを追加しました。この後

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; 
    } 
} 

:私はそのようなapropiate注釈を追加しました。 Nevermind :)その後、私はプロジェクトを運営しています。プログラムが正常に実行されると、私はサーブレットに入ることができますが、データベースは作成されていません。それから、私はウェブ上でソリューションを検索し始めましたが、私の問題を解決する助けはありませんでした。以下は私の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> 

私は本当に立ち往生しています。これまではpersistence.xmlの他のバージョンのプロバイダ(eclipse)をチェックしていましたが、そのファイル内には本当に変わった変更がありましたが、成功しませんでした。私は戦争ファイルもチェックしていた。必要なファイルはすべて内部にあります(特にpersistence.xml)。 FIは別のものに、サーバーの私の現在のGlassFishバージョンを変更するが、それは助けをdidntの:。((( Reeallyの連中はそれで私を助けてください私のknowlageがropablyより良いアイデアが事前に

そのおかげを修正するghow持って低すぎる

+2

ます。呼び出されたそれは 'perstistance.xml'、' persistent.xml'、 'persistence.xml'です。ファイル名のコピーと貼り付けが必要な場合は、スペルが間違っていても動作しないことがあります。 WARファイル内の 'persistence.xml'の正確なパスは何ですか? – ngreen

+0

その名前で間違って申し訳ありませんが、私はこれを書きましたが、ほとんど寝ていました。私はあなたにpersistence.xmlの正しい名前があることを保証します – fOrest94

答えて

0

あなたのクラスを見つけるために、どのようにそれを伝えるpersistence.xmlの一部が欠落しているここでカップルのオプションは次のとおりです。

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

あなたが選択したオプションにプロジェクトが設定されている方法によって異なります

関連する問題