QA@IT

Parent.java の35行目でエラーが出ます。class,interface,enumがありませんと出る。

6017 PV

@ITの記事「Play frameworkのDB操作を楽にするEBeanの基礎知識 (2/3)」についての質問です。

■ブラウザ
Compilation error
エラー: class、interfaceまたはenumがありません
In C:\play-2.2.3\firstProject\app\models\Parent.java at line 34.
31 + createDate + ", updateDate=" + updateDate + "]";
32 }
33}
34@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent") {

35 public List children = new ArrayList();

36}

■コマンドプロンプト
[info] Loading project definition from C:\play-2.2.3\firstProject\project
[info] Set current project to firstProject (in build file:/C:/play-2.2.3/firstProject/)

--- (Running the application from SBT, auto-reloading is enabled) ---

[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000

(Server started, use Ctrl+D to stop and go back to the console...)

[info] Compiling 2 Java sources to C:\play-2.2.3\firstProject\target\scala-2.10\classes...
[error] C:\play-2.2.3\firstProject\app\models\Parent.java:34: エラー: class、interfaceまたはenumがありません
[error] @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent") {
[error] ^
[error] C:\play-2.2.3\firstProject\app\models\Parent.java:35: エラー: class、interfaceまたはenumがありません
[error] public List children = new ArrayList();
[error] ^
[error] C:\play-2.2.3\firstProject\app\models\Parent.java:36: エラー: class、interfaceまたはenumがありません
[error] }
[error] ^
[error] エラー3個
[error] Picked up _JAVA_OPTIONS: "-Dfile.encoding=SJIS"
error javac returned nonzero exit code
[error] application -

! @6jlfh701a - Internal server error, for (GET) [/] ->

play.PlayExceptions$CompilationException: Compilation error[エラー: class、interfaceまたはenumがありません]
at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14$$anonfun$apply$16.apply(PlayReloader.scala:304) ~[na:na]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:304) ~[na:na]
at play.PlayReloader$$anon$1$$anonfun$reload$2$$anonfun$apply$14.apply(PlayReloader.scala:298) ~[na:na]
at scala.Option.map(Option.scala:145) ~[scala-library.jar:na]
[warn] play - No application found at invoker init

[success] Total time: 40 s, completed 2014/10/02 17:55:57


■Parent.java
package models;

import java.util.Date;

import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Version;
import javax.validation.constraints.NotNull;

import play.db.ebean.Model;

import com.avaje.ebean.annotation.CreatedTimestamp;

@Entity
public class Parent extends Model {

@Id
public Long id;

@NotNull
public String name;

@CreatedTimestamp
public Date createDate;

@Version
public Date updateDate;

public String toString() {
    return "Parent [id=" + id + ", name=" + name + ", createDate="
            + createDate + ", updateDate=" + updateDate + "]";
}
@OneToMany(cascade = CascadeType.ALL, mappedBy = "parent") 
public List<Child> children = new ArrayList<Child>();

}

回答

@OneToMany~を追加する箇所は、ファイルの最後ではなく、クラスのメンバーとして追加する必要があります。

一番最後の閉じカッコよりも前に追加してください。

// インポートは省略

@Entity
public class Parent extends Model {

    @Id
    public Long id;

    @NotNull
    public String name;

    @CreatedTimestamp
    public Date createDate;

    @Version
    public Date updateDate;

    public String toString() {
        return "Parent [id=" + id + ", name=" + name + ", createDate="
                + createDate + ", updateDate=" + updateDate + "]";
    }

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "parent")
    public List<Child> children = new ArrayList<Child>();

}

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。