1

クラス変数にcamel casing.This という名前を付けました。これが原因と思われるクラスです。

import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import java.sql.Date;

public class GameBoard
{
    @Temporal(TemporalType.DATE)
    private Date lastMoveDate;

    /**
     * @return the lastMoveDate
     */
    public Date getLastMoveDate() {
        return lastMoveDate;
    }

    /**
     * @param lastMoveDate the lastMoveDate to set
     */
    public void setLastMoveDate(Date lastMoveDate) {
        this.lastMoveDate = lastMoveDate;
    }

}

クラスにはplayerOneFk、 、などの他の変数がいくつかplayerTwoFkありますgameLobbyFk(hibernate はsetter-getterこれらの変数でそれぞれを追跡できますが、列で例外をスローしていlast_move_dateます)。

また、メソッド名setlastMoveDategetlastMoveDate(運が悪か​​った..)、プロパティ..も試しましたlastMoveDate

<property name="lastMoveDate" type="date" column="last_move_date" />

そしてキャッチされた例外

SEVERE: Servlet.service() for servlet [authapi] in context with path [/TTTserver] threw exception [Servlet execution threw an exception] with root cause
org.hibernate.PropertyNotFoundException: Could not find a getter for lastMoveDate in class com.hib.objects.GameBoard
    at org.hibernate.property.BasicPropertyAccessor.createGetter(BasicPropertyAccessor.java:282)
    at org.hibernate.property.BasicPropertyAccessor.getGetter(BasicPropertyAccessor.java:275)
    at org.hibernate.mapping.Property.getGetter(Property.java:272)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.buildPropertyGetter(PojoEntityTuplizer.java:247)
    at org.hibernate.tuple.entity.AbstractEntityTuplizer.<init>(AbstractEntityTuplizer.java:125)
    at org.hibernate.tuple.entity.PojoEntityTuplizer.<init>(PojoEntityTuplizer.java:55)
    at org.hibernate.tuple.entity.EntityEntityModeToTuplizerMapping.<init>(EntityEntityModeToTuplizerMapping.java:56)
    at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:295)
    at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:434)
    at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:109)
    at org.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:55)
    at org.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:226)
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1294)
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)
    at com.hib.objects.HibernateUtil.<clinit>(HibernateUtil.java:24)
    at nz.ac.massey.cs.capstone.auth.authapi.processRequest(authapi.java:42)
    at nz.ac.massey.cs.capstone.auth.authapi.doGet(authapi.java:74)
4

2 に答える 2

2

Hibernate では、プロパティ タイプ「date」が java.sql.Date にマップされます。

java.util.Date を使用している場合は、プロパティ タイプを「timestamp」にする必要があります。

現在のように「日付」を使用すると、java.sql.Date で動作するゲッター/セッターを探すことになり、それを見つけることができなくなります。

Hibernate 基本型リファレンス(6.1.1.12 および 6.1.1.14) を参照してください。

編集:いくつかの命名規則の問題への対処:

Hibernate は、標準の Bean 命名規則に従います。

  • フィールド: someField
  • プロパティ: someField (フィールド名と同じ)
  • Getter: getSomeField() または isSomeField() (ブール値の場合)
  • セッター: setSomeField()
于 2013-08-06T07:09:39.157 に答える
1

<property name="LastMoveDate" type="date" column="last_move_date" />

動作するはずです...

于 2013-08-06T07:08:22.223 に答える