0

私は .Net プログラマーですが、今回は Java プロジェクトに取り組んでおり、いくつかの問題に直面しています。この Java プロジェクトは私のものではありません。他の開発者によって開発され、Hibernate を使用しています。

Ant ビルダーを実行すると、次のエラーが表示されます。

9: error: annotation type not applicable to this kind of declaration
@SequenceGenerator( name="companynameSequence" , sequenceName="COMPANYNAME_SEQUENCE" , allocationSize=1 )
^

この注釈は、package-info.java というファイルにあります。このファイルの内容は、次の数行のコードです。

@SequenceGenerator( name="companynameSequence" , sequenceName="COMPANYNAME_SEQUENCE" , allocationSize=1 )
package com.companyname.application.model;

import javax.persistence.SequenceGenerator;

import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.TypeDef;
import org.jasypt.hibernate.type.EncryptedStringType;

その注釈を削除すると、プロジェクトは正常にコンパイルされますが、実行時エラーが発生します。

Invocation of init method failed; nested exception is org.hibernate.AnnotationException: Unknown Id.generator: companynameSequence

私はEclipse JunoとJRE 1.7を使用しています

手伝って頂けますか ?

ありがとうございました

4

3 に答える 3

1

次のように書く必要があります。

//different annotations
class className{
        @Id
        @SequenceGenerator(sequenceName = "COMPANYNAME_SEQUENCE", name = "companynameSequence")
        @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="companynameSequence")
        @Column(name="ID", nullable=false, unique=true)
        private int id;
//other fields and methods
}

またはこれ:

//different annotations
class className{
        @Id
        @SequenceGenerator(sequenceName = "COMPANYNAME_SEQUENCE", name = "companynameSequence")
        @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="companynameSequence")
        @Column(name="ID", nullable=false, unique=true)
        public int getId(){};
//other fields and methods
}

これは単なる例であり、フィールド名は私のものとは異なる場合があります。

識別子とジェネレーターに関するこの投稿を読んでください

于 2013-03-25T19:06:39.207 に答える
0

注釈は実行時の動作に影響を与えるべきではありません。したがって、注釈をコメントアウトしてバグを修正することをお勧めします。ただし、注釈の意図やエラーがスローされる理由については説明できません。

于 2013-03-25T17:03:21.410 に答える
0

1.6 から 1.8 に移行するときに、この問題に直面しています。ここでの問題は、@javax.persistence.SequenceGenerator が @Target({ TYPE, METHOD, FIELD }) のみを対象とし、パッケージを対象としないことでした。アノテーションが適切に処理されないのは、Java 1.7 までのバグでした。修正が何であるかはわかりませんが、探しています。

于 2015-03-26T19:09:27.970 に答える