2009-04-21 1 views
0

I次のJavaクラスがあります:私はの.groovyするファイルの拡張子を変更すると、アプリケーションが動作しなくなったGroovyの+ JPA +春は働いていない

package domain; 

//imports 

@Entity 
public class User { 

    @Id @GeneratedValue 
    private long id; 

    private String name; 
    private String password; 
    private String mail; 
    //Getters, Setters and Constructors 
} 

を。実際には、このスタックトレースをスロー:

org.springframework.dao.InvalidDataAccessApiUsageException: 不明なエンティティ:domain.User。 不明なエンティティ:ネストされた 例外は java.lang.IllegalArgumentExceptionがあるdomain.User

私はthis bookを読んでいると著者はどのグルーヴィークラスはちょうどその拡張子を変更するJavaクラスの場所を取ることができると述べています。だから、なぜ春とJPAは私のグルーヴィークラスを認識しないのですか?

誰もこの技術をうまく使いましたか?

答えて

2

ここにはたくさんの情報がないので、推測する時間があります。

Springのように、User.classファイルが見つかりません。 GroovyコンパイラとJavaコンパイラの出力パスが異なる場合があり、Groovyの出力パスがクラスパスまたはデプロイメントセットにない可能性があります。

あなたの戦争をチェックしてください、それにUser.classはありますか? WEB-INF/classes/domainにありますか?そうでない場合は、Groovyの出力フォルダが配備内にないように見えます。 Groovy出力フォルダをJava出力フォルダに合わせて変更してみてください。

0

Groovy(.groovy)ソースファイルとJava(.java)ソースファイルの両方が、バイトコード(.class)ファイルにコンパイルされます。ファイルの拡張子を変更する必要はありません。

Groovyコードを使用している場合は、.javaファイルがjavacで.classファイルを生成するのと同じように、groovyコンパイラを使用して.classファイルを生成する必要があります。

JPAまたはSpringの問題ではないようです。

+0

User.groovyを使用するクラスがきれいにコンパイルされるため、コンパイルされているようです。私が知っている限り、javaからgroovyに移動すると、ソースファイルの拡張子を変更する必要があります。 –

+1

Trueは、拡張モジュールを変更することは、Springがコンパイル結果(どちらの場合も.classファイル)を使用しているので、(必要ではあるが)関連性がないと言っていただけです。 – billjamesdev

関連する問題