Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA返回空对象_Jpa_Kotlin - Fatal编程技术网

JPA返回空对象

JPA返回空对象,jpa,kotlin,Jpa,Kotlin,我的用户模型 @Entity @Table(name="users") data class User( @Id @GeneratedValue(strategy = GenerationType.IDENTITY) val id: Long = -1, @Column(unique=true) val username: String) : Serializable 数据库中有两条记录 这个问题很好 [2018-02-23T1

我的用户模型

@Entity
@Table(name="users")
data class User(
        @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
        val id: Long = -1,
        @Column(unique=true)
        val username: String) : Serializable
数据库中有两条记录

这个问题很好

[2018-02-23T14:32:07.066+0100][Payara 4.1][FINE]] [org.eclipse.persistence.session./file:/Users/youri/Downloads/payara41/glassfish/domains/domain1/applications/Kwetter-1.0-SNAPSHOT/WEB-INF/classes/_-Kwetter.sql] [tid:_ThreadID=28 _ThreadName=http线程池::http-listener-1(4)] [timeMillis:1519392727066][levelValue:500][[选择ID、用户名 来自用户]]

但它输出两个空对象,而不是两个用户对象

[{},{}]
使用实体管理器的抽象Dao

@Stateless
abstract class Abstract<T : Serializable> {
    @PersistenceContext
    private lateinit var entityManager: EntityManager

    abstract fun getEntityClass(): Class<T>

    open fun find(id: Long): T {
        return entityManager.find(getEntityClass(), id)
    }

    // this returns the weird two empty objects
    open fun all(): List<T> {
        val builder = entityManager.criteriaBuilder
        val c = builder.createQuery(getEntityClass())
        c.from(getEntityClass())
        val query = entityManager.createQuery(c)

        return query.resultList
    }
}
@无状态
抽象类抽象{
@持久上下文
私有lateinit变量entityManager:entityManager
抽象趣味getEntityClass():类
开放式趣味发现(id:Long):T{
返回entityManager.find(getEntityClass(),id)
}
//这将返回两个空对象
open fun all():列表{
val builder=entityManager.criteriaBuilder
val c=builder.createQuery(getEntityClass())
c、 from(getEntityClass())
val query=entityManager.createQuery(c)
return query.resultList
}
}

您应该使用
var
而不是
val
,因为Kotlin不会为
val
字段设置。JPA需要具有可变属性(即getter和setter)


TLDR:使用
var
而不是
val

您应该使用
var
而不是
val
,因为Kotlin不会为
val
字段设置。JPA需要具有可变属性(即getter和setter)


TLDR:使用
var
而不是
val

这两个对象是什么类型的?它应该打印两个序列化的用户对象,但它打印两个空对象…是的,但字符串表示不是最可靠的调试方法。这些元素的类别是什么?i、 e.
item::class
的结果是什么?它们似乎不是
User
@Moira User::class类型您将属性定义为val,但它们必须是可变的。使用var而不是VAL这两个对象是什么类型的?它应该打印两个序列化的用户对象,但它打印两个空对象…是的,但字符串表示不是最可靠的调试方法。这些元素的类别是什么?i、 e.
item::class
的结果是什么?它们似乎不是
User
@Moira User::class类型您将属性定义为val,但它们必须是可变的。使用var而不是val