JPA Entity Exception для составного IDclass - PullRequest
0 голосов
/ 19 марта 2020

друзья, я пытаюсь использовать JPAItem писатель в своем весеннем пакетном приложении и сталкиваюсь с некоторыми исключениями при написании моей первой записи. У меня есть сущности родительских (один) ко многим (дочерним) отношениям. Я определил их соответственно. мои таблицы БД имеют составные первичные ключи.

Я чувствую себя как сгенерированные сущности (при использовании некоторых утилит через eclipse по умолчанию была предоставлена ​​опция встроенного идентификатора, и я почувствовал, что один подход не работает, так как я продолжаю получать определение дублирующего ключа поэтому я решил переключиться на опцию IDclass, которая, как мне кажется, работает. Проблемы:

  1. auto-id действительно генерировал, хотя я добавил сгенерированную аннотацию значений. После этого я узнал, что последний спящий режим, для которого нам нужно несколько настроек для этой аннотации, чтобы пройти через это исключение.

Теперь я получаю исключение ниже. Я путаюсь с этим, и я продолжал проверять тип данных с полями в классе vs и мой тип базы данных. таблица базы данных имеет BigInt. в моих сущностях, я имею их как Long / long, не может пройти через ниже error

org.hibernate.PropertyAccessException: Не удалось установить поле значение [POST_INSERT_INDICATOR] по отражению: [class entity.Table1PK.empl oyeeId] установщик
org.hibernate.PropertyAccessException: не удалось установить значение поля [POST_INSERT_INDICATOR] значение путем отражения: [class entity.Table1PK.employeeId]]

         @Entity(name="T_CONTB_ID")
            @Table(name="T_CONTB_ID" , schema = "myschema")
            @IdClass(Table2PK.class)
            public class Table2 implements Serializable {
                private static final long serialVersionUID = 1L;
                @Id
                @Column(name="BATCH_ID", insertable=false, updatable=false)
                private Long   batchId;
                @Id
                @Column(name="employee_Id", insertable=false, updatable=false)
                private Long  employeeId;
                @Id
                @GeneratedValue(strategy= GenerationType.AUTO,generator="native")
                @GenericGenerator(name = "native",strategy = "native")
                @Column(name="CONTRIB_ID")
                private Long  contribId;
                @ManyToOne
                @JoinColumns({
                    @JoinColumn(name="BATCH_ID", referencedColumnName="BATCH_ID"),
                    @JoinColumn(name="employee_Id", referencedColumnName="employee_Id")
                    })
                private Table1 TEmployeeUpd;

            }

            public class Table2PK implements Serializable {
                //default serial version id, required for serializable classes.
                private static final long serialVersionUID = 1L;
                private Long batchId;
                private Long employeeId;
                private Long contribId;
                public Table2() {
                }
                //hashcode ,equals and getters/setters excluded
            }

        @Entity(name="T_EMP_ID")
        @Table(name="T_EMP_ID", schema = "MySchema")
        @IdClass(Table1PK.class)
        public class Table1 implements Serializable {

            @Id
            @Column(name = "BATCH_ID") 
            private Long batchId;
            @Id
            @Column(name = "employee_Id")
            @GeneratedValue(strategy= GenerationType.AUTO,generator="native")
            @GenericGenerator(name = "native",strategy = "native")
            private Long employeeId;

        }

   public class Table1PK implements Serializable {

    private static final long serialVersionUID = 1L;
    private Long batchId;
    private Long employeeId;
    public Table1PK() {
    }
    //getter/setters/hashcode and equals excluded
}
...