小编MrN*_*ful的帖子

作为实体的密封类

我正在尝试解决 kot​​lin 密封类的继承问题和 hibernate 的强制问题。

这是我的课程:

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
sealed class LegalGuardian(
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    var id: Int? = null
)

@Entity
@DiscriminatorValue(value = "MOTHER")
data class MotherLegalGuardian(
    @OneToOne(cascade = [CascadeType.ALL], orphanRemoval = true)
    val pesel: Pesel
) : LegalGuardian()

@Entity
@DiscriminatorValue(value = "OTHER")
data class OtherLegalGuardian(
    val firstName: String,
    val lastName: String,
    @OneToOne
    val address: Address
) : LegalGuardian()
Run Code Online (Sandbox Code Playgroud)

这是抛出的问题:

原因:org.hibernate.MappingException:无法在 org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:123) 处获取 org.hibernate.persister.entity.SingleTableEntityPersister 的构造函数。 .PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:77) 在 org.hibernate.internal.SessionFactoryImpl.(SessionFactoryImpl.java:348) 在 org.hibernate.boot.internal.SessionFactoryBuilderImpl.build(SessionFactoryBuilderImpl.java:444) 在 …

spring hibernate jpa spring-data-jpa kotlin

5
推荐指数
1
解决办法
3575
查看次数

Kotlin 设置序列的最有效方式

嗨,我有 1330 个对象的列表,并且想应用方法并获得集合作为结果。

        val result = listOf1330
            .asSequence()
            .map {
                someMethod(it)
            }
        val resultSet = result.toSet()
Run Code Online (Sandbox Code Playgroud)

它在没有 toSet 的情况下工作正常,但如果执行时间长了大约 10 倍。我已经使用序列来使它工作得更快,但结果我需要没有重复的列表(设置)。

简单地说:将序列转换为集合的最有效方法是什么?

sequence kotlin

1
推荐指数
1
解决办法
989
查看次数

Kotlin groupby value as set instead of list

I'm going to groupby Set<Pair<String,Int>> values to Map<String, Set<Int>> so simply. Find all matching ints for string and create set. I've got solution that works:


setStringInt.stream()
            .collect(
                groupingBy(
                    Projection::stringObj,
                    mapping(Projection::intObj,
                        toSet<Int>())
                )
            )
Run Code Online (Sandbox Code Playgroud)

I've got kind of cleaner:

            .groupBy { it.stringobj }
            .mapValues { it.value.map { it.intobj }.toSet() }
Run Code Online (Sandbox Code Playgroud)

But it's looking quite dirty. Do you have any idea how to simplify this? Am I able to do this without using stream?

kotlin

1
推荐指数
2
解决办法
328
查看次数

标签 统计

kotlin ×3

hibernate ×1

jpa ×1

sequence ×1

spring ×1

spring-data-jpa ×1