Как исправить неспецифическое исключение IndexOutOfBounds в приложении Spring и JPA?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как исправить неспецифическое исключение IndexOutOfBounds в приложении Spring и JPA?

Сообщение Anonymous »

У меня есть несколько классов, созданных на основе таблиц базы данных Oracle с несколькими составными ключами. В настоящее время при попытке запуска в IntelliJ я сталкиваюсь со следующим исключением, которое не могу устранить после нескольких попыток рефакторинга
Caused by: java.lang.IndexOutOfBoundsException: Index 2 out of bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64) ~[na:na]
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70) ~[na:na]
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:266) ~


Вот пример класса, использующего класс составного ключа.
@Getter
@Setter
@Entity
@Table(name = "TABLE_A", schema = "SCHEMA_A")
public class EntityA {

@EmbeddedId
private EntityAId id;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumns({
@JoinColumn(name = "FIELD_1", referencedColumnName = "FIELD_1", insertable = true, updatable = true),
@JoinColumn(name = "CREATE_DATE", referencedColumnName = "CREATE_DATE", insertable = true, updatable = true)
})
@OnDelete(action = OnDeleteAction.RESTRICT)
private EntityB entityB;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
@OnDelete(action = OnDeleteAction.RESTRICT)
@JoinColumn(name = "FIELD_2", referencedColumnName = "FIELD_2", insertable = false, updatable = false)
private EntityC entityC;

@Column(name = "QUANTITY", precision = 28, scale = 10)
private BigDecimal quantity;

@ManyToOne(fetch = FetchType.LAZY)
@OnDelete(action = OnDeleteAction.RESTRICT)
@JoinColumn(name = "FIELD_3", referencedColumnName = "FIELD_3")
private EntityD entityD;

@Column(name = "LENGTH", precision = 28, scale = 10)
private BigDecimal length;

@Column(name = "WIDTH", precision = 28, scale = 10)
private BigDecimal width;

@Column(name = "HEIGHT", precision = 28, scale = 10)
private BigDecimal height;

@Column(name = "WEIGHT", precision = 28, scale = 10)
private BigDecimal weight;

@Size(max = 30)
@NotNull
@Column(name = "UPDATE_USER", nullable = false, length = 30)
private String updateUser;

@Column(name = "UPDATE_DATE")
private LocalDate updateDate;
}


Вот класс составного ключа, который используется в приведенном выше классе.
@Getter
@Setter
@Embeddable
public class EntityAId implements Serializable {

private static final long serialVersionUID = 1L;

@Size(max = 30)
@NotNull
@Column(name = "FIELD_1", nullable = false, length = 30)
private String field1;

@NotNull
@Column(name = "CREATE_DATE", nullable = false)
private LocalDate createDate;

@Size(max = 3)
@NotNull
@Column(name = "FIELD_2", nullable = false, length = 3)
private String field2;

// Default constructor
public EntityAId() {}

// Constructor with parameters
public EntityAId(String field1, LocalDate createDate, String field2) {
this.field1 = field1;
this.createDate = createDate;
this.field2 = field2;
}
}


Подробнее здесь: https://stackoverflow.com/questions/793 ... pp-and-jpa
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»