2

簡単なプロジェクトを実行しようとしています。私はいくつかの問題に苦しんでいます。データベースインスタンスに単純なテーブルを作成しました。次に、Googleチュートリアルに従って、Eclipseでプロジェクトをセットアップしました。

ローカルホストから実行すると、次のエラーが発生します。

[EL Severe]: 2012-11-23 14:23:16.915--ServerSession(1241461653)--Exception [EclipseLink-0] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345):     org.eclipse.persistence.exceptions.IntegrityException
Descriptor Exceptions: 
---------------------------------------------------------

Exception [EclipseLink-60] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [set] or [get] is not defined in the object [com.shared.Main].
Internal Exception: java.lang.NoSuchMethodException: com.shared.Main.get(java.lang.String)
Mapping: org.eclipse.persistence.mappings.DirectToFieldMapping[id-->main.ID]
Descriptor: RelationalDescriptor(com.shared.Main --> [DatabaseTable(main)])

Exception [EclipseLink-60] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DescriptorException
Exception Description: The method [set] or [get] is not defined in the object [com.shared.Main].
Internal Exception: java.lang.NoSuchMethodException: com.shared.Main.get(java.lang.String)
Mapping: org.eclipse.persistence.mappings.DirectToFieldMapping[name-->main.NAME]
Descriptor: RelationalDescriptor(com.shared.Main --> [DatabaseTable(main)])

Eclipseリンクが私のオブジェクトのゲッターとセッターを見つけられないようです...何か手がかりはありますか?私のpersistence.xml:

<?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_1_0.xsd" version="1.0">

    <persistence-unit name="transactions-optional" transaction-type="RESOURCE_LOCAL">
        <provider></provider>
        <mapping-file>META-INF/eclipselink-orm.xml</mapping-file>
        <properties>
            <property name="datanucleus.NontransactionalRead" value="true"/>
            <property name="datanucleus.NontransactionalWrite" value="true"/>
            <property name="datanucleus.ConnectionURL" value="appengine"/>
            <property name="javax.persistence.jdbc.driver" value="com.google.appengine.api.rdbms.AppEngineDriver"/>
            <property name="javax.persistence.jdbc.url" value="jdbc:google:rdbms://myinstance/test_jpa"/>
            <property name="javax.persistence.jdbc.user" value="myuser"/>
            <property name="javax.persistence.jdbc.password" value="mypassword"/>
        </properties>
    </persistence-unit>
</persistence>

私のeclipse-orm.xml:

<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.4" xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/orm" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.eclipse.org/eclipselink/xsds/persistence/orm http://www.eclipse.org/eclipselink/xsds/eclipselink_orm_2_4.xsd">
    <entity class="com.shared.Main" access="VIRTUAL">
        <attributes>
            <id name="id" attribute-type="int">
                <generated-value strategy="AUTO"/>
            </id>
            <basic name="name" attribute-type="String">
            </basic>
        </attributes>
    </entity>
</entity-mappings>

私のオブジェクト:

package com.shared;

import java.io.Serializable;
import javax.persistence.*;


/**
 * The persistent class for the main database table.
 * 
 */
@Entity
@Table(name="main")
public class Main implements Serializable {
    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    @Column(unique=true, nullable=false)
    private int id;

    @Column(length=50)
    private String name;

    public Main() {
    }

    public int getId() {
        return this.id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
4

2 に答える 2

1

共有フォルダは(また)クライアント上に存在します。クライアントはデータベースについて何も知ることができません。SQLなど。共有からサーバーへのすべてのデータベース関係を削除します。

于 2012-11-23T15:10:50.433 に答える
0

この問題は、persistance.xmlのormファイルへのリンクを削除することで解決されました。

<mapping-file>META-INF/eclipselink-orm.xml</mapping-file>

クラスへの直接マッピングの追加

<class>org.my.package.MyClass</class>
于 2013-02-11T08:46:57.750 に答える