Entity
的属性之一是inline class
(在提出此问题时为实验性功能)。而且在运行Spring Boot应用程序时,我得到的java.lang.ArrayIndexOutOfBoundsException: 3
对我来说毫无意义。
结果是3
是表示属性在我实体中位置的数字。
@Entity
@Table(name = "my_entity_table")
class MyEntity(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = 0,
@Column(name = "some_field")
val someField: Int = 2,
@Column(name = "a_second_field")
val aSecondField: ASecondField
)
inline class ASecondField(val value: String)
这是堆栈跟踪的一部分:
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'myEntityRepository': Invocation of init method failed; nested exception is java.lang.ArrayIndexOutOfBoundsException: 3
...
Caused by: java.lang.ArrayIndexOutOfBoundsException: 3
at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers.buildPreferredConstructor(PreferredConstructorDiscoverer.java:221)
at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers.access$200(PreferredConstructorDiscoverer.java:89)
at org.springframework.data.mapping.model.PreferredConstructorDiscoverer$Discoverers$2.lambda$discover$0(PreferredConstructorDiscoverer.java:161)
...
答案 0 :(得分:0)
解决方案是使我的内联类(在示例中为ASecondField
)成为typealias
。
原来的代码是:
inline class ASecondField(val value: String)
这就是我解决的方法:
typealias ASecondField = String
当然,这不是最佳答案,因为我不得不更改原始设计。