Hallo zusammen,
Leider sehe ich den Wald vor lauter Bäumen nicht mehr, dazu folgende Ausgangslage:
Ich habe eine Action-Entity die eine Verbindung zu drei weiteren Entities (RareItem, SpecialItem, RegularItem) herstellen soll.
Die Implementierung:
Action-Entity:
RegularItem-Entity (analog dazu SpecialItem und RareItem):
Und die Main:
Ich hätte eigentlich erwartet, dass die gespeicherten Entities in die Action-Entity verbunden werden. Wenn ich diese allerdings über action.regularItems abfrage, wird diese Verknüpfung nicht hergestellt. Die size ist 0. Warum ist das so?
Leider sehe ich den Wald vor lauter Bäumen nicht mehr, dazu folgende Ausgangslage:
Ich habe eine Action-Entity die eine Verbindung zu drei weiteren Entities (RareItem, SpecialItem, RegularItem) herstellen soll.
Die Implementierung:
Action-Entity:
Java:
import jakarta.persistence.*
@Entity
class Action(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int? = null,
var actionName: String,
@OneToMany(mappedBy = "action", fetch = FetchType.LAZY, cascade = [CascadeType.MERGE], orphanRemoval = true, targetEntity = RareItem::class)
var rareItems: List<RareItem> = arrayListOf(),
@OneToMany(mappedBy = "action", fetch = FetchType.LAZY, cascade = [CascadeType.MERGE], orphanRemoval = true, targetEntity = SpecialItem::class)
var specialItems: List<SpecialItem> = arrayListOf(),
@OneToMany(mappedBy = "action", fetch = FetchType.LAZY, cascade = [CascadeType.MERGE], orphanRemoval = true, targetEntity = RegularItem::class)
var regularItems: List<RegularItem> = arrayListOf(),
)
RegularItem-Entity (analog dazu SpecialItem und RareItem):
Java:
import jakarta.persistence.*
@Entity
class RegularItem(
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Int? = null,
var itemId: Int,
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "action_id")
var action: Action? = null,
)
Und die Main:
Java:
@SpringBootApplication
class ManyToOneApplication(
val specialItemRepository: SpecialItemRepository,
val regularItemRepository: RegularItemRepository,
val rareItemRepository: RareItemRepository,
val actionRepository: ActionRepository,
): CommandLineRunner {
override fun run(vararg args: String?) {
kotlin.run {
val regularItem = RegularItem(itemId = 11111)
val rareItem = RareItem(itemId = 22222)
val specialItem = SpecialItem(itemId = 33333)
this.regularItemRepository.save(regularItem)
this.rareItemRepository.save(rareItem)
this.specialItemRepository.save(specialItem)
val action = Action(actionName = "PROCESS")
this.actionRepository.save(action)
val ac = this.actionRepository.findById(action.id!!)
ac.stream().forEach { println(it.regularItems.size) }
}
}
}
Ich hätte eigentlich erwartet, dass die gespeicherten Entities in die Action-Entity verbunden werden. Wenn ich diese allerdings über action.regularItems abfrage, wird diese Verknüpfung nicht hergestellt. Die size ist 0. Warum ist das so?