Spring связи MySQL
После добавления любых отношений в класс UserModel и при попытке получения данных по любому из полей появляется ошибка. Я новичок в Spring, что я делаю не так?
`2021-08-03 15:49:54.158 ERROR 11808 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.StackOverflowError] with root cause
java.lang.StackOverflowError: null
at java.base/java.lang.Long.numberOfTrailingZeros(Long.java:1805) ~[na:na]
at java.base/jdk.internal.math.FloatingDecimal$BinaryToASCIIBuffer.dtoa(FloatingDecimal.java:431) ~[na:na]
at java.base/jdk.internal.math.FloatingDecimal.getBinaryToASCIIConverter(FloatingDecimal.java:1825) ~[na:na]
at java.base/jdk.internal.math.FloatingDecimal.appendTo(FloatingDecimal.java:98) ~[na:na]
at java.base/java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:883) ~[na:na]
at java.base/java.lang.StringBuilder.append(StringBuilder.java:258) ~[na:na]
at octii.dev.taxi.models.DriverAvailableModel.toString(DriverAvailableModel.kt) ~[classes/:na]
at java.base/java.lang.String.valueOf(String.java:3352) ~[na:na]
at java.base/java.lang.StringBuilder.append(StringBuilder.java:166) ~[na:na]
at octii.dev.taxi.models.UserModel.toString(UserModel.kt) ~[classes/:na]
at java.base/java.lang.String.valueOf(String.java:3352) ~[na:na]
at java.base/java.lang.StringBuilder.append(StringBuilder.java:166) ~[na:na]
at octii.dev.taxi.models.DriverAvailableModel.toString(DriverAvailableModel.kt) ~[classes/:na]
at java.base/java.lang.String.valueOf(String.java:3352) ~[na:na]
at java.base/java.lang.StringBuilder.append(StringBuilder.java:166) ~[na:na]
at octii.dev.taxi.models.UserModel.toString(UserModel.kt) ~[classes/:na]
at java.base/java.lang.String.valueOf(String.java:3352) ~[na:na]`
Класс UserModel:
@Entity
@Table(name = "users")
data class UserModel(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "_id", insertable = false, updatable = false)
var id: Long = -1,
@Column(name = "user_name")
var userName : String = "",
@Column(name = "user_phone")
var phone : String = "",
@Column(name = "user_type")
var type : String = "client",
@Column(name = "token")
var token : String = "",
@Column(name = "is_whatsapp")
var isWhatsapp : Boolean = false,
@Column(name = "is_viber")
var isViber : Boolean = false,
@Column(name = "uuid")
var uuid : String = UUID.randomUUID().toString(),
@Column(name = "is_only_client")
var isOnlyClient : Boolean = type == "client",
@Column(name = "avatar_url")
var avatarURL : String? = "",
@OneToOne(mappedBy = "driver", cascade = [CascadeType.ALL])
var driver : DriverAvailableModel? = null
)
Класс DriverAvailableModel:
@Entity
@Table(name = "drivers_available")
data class DriverAvailableModel(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "_id")
var id: Long = -1,
@Column(name = "ride_distance")
var rideDistance : Float = 15f,
@Column(name = "price_per_minute")
var pricePerMinute : Float = 1f,
@Column(name = "price_per_km")
var pricePerKm : Float = 10f,
@Column(name = "price_waiting_min")
var priceWaitingMin : Float = 1f,
@Column(name = "is_working")
var isWorking : Boolean = false,
@OneToOne(optional = false)
@JoinColumn(name = "user_id")
@JsonBackReference
var driver : UserModel
)
Сделал Debug и оказалось, что ошибка возникает при получении модели в Репозитории Usermodel в методе findByToken:
@Repository
interface UserRepository : JpaRepository<UserModel, Long>, Serializable {
fun findByToken(token : String) : UserModel?
}