16

従業員エンティティ内で関数 (埋め込み可能) のリストを関連付けようとしていますが、H2 は「識別子」が必要であると言って不満を抱いているようです。

原因: org.h2.jdbc.JdbcSQLException: SQL ステートメントの構文エラー " CREATE TABLE EMPLOYEE_FUNCTIONS ( EMPLOYEE_EMPLOYEEID VARCHAR(255) NOT NULL, ACTIVE BOOLEAN NOT NULL, DEPARTMENTNUMBER INTEGER NOT NULL, DESCRIPTION VARCHAR(255), ORDER[*] INTEGER NOT NULL ) "; 期待される「識別子」;

問題は、私はすでに他のプロジェクトでそれを行っており、なぜそれが機能しないのかわかりません。

従業員.java

@Entity
public class Employee extends AbstractScheduleEntity<EmployeeSchedule> {
    public static final String ACOMBA_UNIQUE_FIELD = "acombaUnique";

    @Id
    @GenericGenerator(name = "sequence_id", strategy = 
    "ca.tecsar.core.sql.ServerSequenceGenerator")
    @GeneratedValue(generator = "sequence_id")
    @Column(name = "EmployeeID", unique = true, nullable = false)
    private String employeeID;
    @ElementCollection
    private List<Function> functions;

    //getter and setter
}

関数.java

@Embeddable
public class Function implements Serializable {
    private int order;
    private boolean active;
    private String description;
    private int departmentNumber;

    //getter and setter
}

必要のない Employee のいくつかのプロパティを削除しました。このエラーの原因は何ですか? 従業員の識別子として文字列を持っているためですか? もしそうなら、Hibernate に Employee_EmployeeID を識別子として追加するように指示するにはどうすればよいですか? ありがとう

4

10 に答える 10

7

フィールドに名前を付けるときに同じ問題があります: private String toand private String from、 ex に変更されました。dayTo 、 dayFrom 、そしてうまくいきました。

于 2019-04-25T10:59:25.190 に答える
2

テスト用のSpringおよびH2データベースで同じ問題が発生しました。エンティティのフィールド名は「interval」で、名前を「inter」に変更して問題を解決しました。

したがって、これらのエラーは、エンティティの SQL 予約名が原因で発生します。

于 2019-06-10T17:26:47.257 に答える
0

入れてみてください; " and テスト ?

于 2017-10-13T20:20:31.760 に答える