ElementCollection 在 JSON 响应中返回 Null

用户_mda

我有以下 elementCollection 声明

在 MyMainClass 类中

@Entity
@Table(name = "MyMainClass")
referencedColumnName="id"))
@NamedQueries({
    @NamedQuery(
        name = "=findAll",  
        query = "SELECT s FROM MyMainClass s")})

public class MyMainClass  implements Comparable<MyMainClass>, Serializable {


        @JsonProperty
        @ElementCollection(targetClass=String.class)
        @Column
        Map<String,String> myMap;

public void setMyMap(Map<String,String> myMap) {
this.myMap = myMap;
}

public Map<String,String> getMyMap() {
return this.myMap;
}


}

这将创建一个表 MyMainClass_myMap

mymainclass_id mymapvalue mymapkey


public List<MyMainClass> findAll(String param) {
    Session session = sessionFactory.openSession();
    Transaction tx = null;
    List<MyMainClass> myMainClass = null;
    try {
        tx = session.beginTransaction();
        String sql = "SELECT * FROM MyMainClass  WHERE param = :param ;
        SQLQuery query = session.createSQLQuery(sql);
        query.setParameter("param", param);
        query.addEntity(MyMainClass.class);
        myMainClass = query.list();
        tx.commit();
    }
    catch(RuntimeException e) {
        if (tx != null) {
        tx.rollback();
        }
        throw e;

    }
    finally {
        session.close();
    }
    return myMainClass;

    }

对于 nut 值,JSOn 返回 null。这是为什么?

克里齐斯

您已经定义了一个命名查询来检索 的所有实例,MyMainClass但在 内部findAll,您使用了 SQL 查询。这是为什么?您的 SQL 查询仅从MyMainClass表中检索数据

您应该做的是使用从session.getNamedQuery("=findAll"). 为了myMap填充实体,您可以:

  1. 使用 JPA 注释 ( @ElementCollection(fetch = FetchType.EAGER))将元素集合标记为急切获取
  2. 使用 Hibernate 注释 ( @Fetch(FetchMode.JOIN))将元素集合标记为急切获取
  3. 在命名查询 ( SELECT s FROM MyMainClass s LEFT JOIN FETCH s.myMap) 中使用 fetch join
  4. myMap在关闭会话之前初始化(例如,通过调用Hibernate.initialize(entity.getMyMap())从查询中检索到的每个实体)

选项#2 和#3 可能是性能最好的。请注意,myMap无论何时MyMainClassSession. 如果这是您的意图,那可能就是要走的路。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RESTful Web服务json响应在Java中返回null

来自分类Dev

改造响应在onResponse函数中返回null(单个JSON对象)

来自分类Dev

尽管JSON响应正确,但json_decode返回NULL

来自分类Dev

JSON在我的应用中返回[null,null]

来自分类Dev

JSON在使用jQuery $ .ajax响应时返回null

来自分类Dev

来自服务器的部分 JSON 响应返回 null:Android

来自分类Dev

phpmailer在苗条中返回响应null

来自分类Dev

Geocode API 在 HTTP 响应中返回 null

来自分类Dev

解码JSON在Java中返回null

来自分类Dev

JSON数组返回null

来自分类Dev

大Json返回null

来自分类Dev

JSON解码返回NULL

来自分类Dev

Json返回null

来自分类Dev

JSON对象返回Null

来自分类Dev

返回 JSON NULL

来自分类Dev

JSON DeserializeObject 返回 null

来自分类Dev

在ColdFusion中作为响应返回JSON数据

来自分类Dev

在Ajax响应中从WebSerice返回json对象

来自分类Dev

使用Set JPA维护@ElementCollection中的顺序

来自分类Dev

JPA @OrderBy 在 @ElementCollection 中不起作用

来自分类Dev

在 MappedSuperclass 中为 ElementCollection 使用共享表

来自分类Dev

Ajax响应返回null

来自分类Dev

来自Json的GSON返回null

来自分类Dev

JSON_Search()返回null

来自分类Dev

JSON令牌不断返回NULL

来自分类Dev

php JSON对象返回null

来自分类Dev

PostgreSQL的JSON类型返回null

来自分类Dev

Android JSON解析返回null

来自分类Dev

Xcode解析JSON返回NULL