Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
Spring &引用;org.hibernate.PersistentObject异常:分离实体;然后是应用程序崩溃_Spring_Hibernate_Entity_Persist - Fatal编程技术网

Spring &引用;org.hibernate.PersistentObject异常:分离实体;然后是应用程序崩溃

Spring &引用;org.hibernate.PersistentObject异常:分离实体;然后是应用程序崩溃,spring,hibernate,entity,persist,Spring,Hibernate,Entity,Persist,我正在尝试将此实体持久化: @Entity public class Produto extends Model { @Id @GeneratedValue(strategy=GenerationType.IDENTITY) private Integer id; ... @OneToMany @Fetch(FetchMode.SELECT) @Cascade(CascadeType.ALL) private List<Imagem> thumbnails

我正在尝试将此实体持久化:

@Entity
public class Produto extends Model {
  @Id
  @GeneratedValue(strategy=GenerationType.IDENTITY)
  private Integer id;
...
  @OneToMany
  @Fetch(FetchMode.SELECT)
  @Cascade(CascadeType.ALL)
  private List<Imagem> thumbnails;
...
}
服务

public void insert(E object) {
    dao.insert(object);
  }
dao

public void insert(E object) {
    EntityManager entityManager = getEntityManager();
        entityManager.getTransaction().begin();
        entityManager.persist(object);
        entityManager.getTransaction().commit();
    entityManager.close();
  }
属性编辑器

  @RequestMapping(value = "/insert", method=RequestMethod.POST)
  @ResponseBody
  @PreAuthorize("hasPermission(#user, 'cadastra_'+#this.this.name)")
  public void insert(@Valid E object, BindingResult result) {
    serv.insert(object);
  }
public class ImagemEditor extends PropertyEditorSupport {
  @Override
  public void setAsText(String text) {
    if (!text.equals("")) {
      Integer id = Integer.parseInt(text);
      ImagemService serv = new ImagemService();
      org.loja.AppContextHolder.getContext().getAutowireCapableBeanFactory().autowireBean(serv);
      Imagem imagem = serv.findBy("id", id);
      setValue(imagem);
    } else {
      setValue(null);
    }
  }
}
但我得到了这个错误:

org.hibernate.PersistentObjectException: detached entity passed to persist: org.loja.model.imagem.Imagem
当我尝试退出应用程序时(使用ctrl-c,我使用spring boot运行它),它会崩溃,并出现以下消息:

2019-11-18 19:55:46.244  INFO 134572 --- [       Thread-3] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down'
直到我结束这个过程


任何人都可以提示这里出了什么问题?

我设法解决了这个问题,将属性配置更改为:

  @OneToMany(fetch = FetchType.EAGER)
  private Set<Imagem> thumbnails;
@OneToMany(fetch=FetchType.EAGER)
私人设置缩略图;
使用此html/thymeleaf代码:

  <table>
    <tr>
      <td>
        <button type="button" onclick="add_single_imagem();" th:style="${command.icone}? 'display: none;' : 'display: block;'">
          <img class="thumbnail" th:src="@{/images/icon_add_imagem.png}" alt="adicionar icone"/>
          <input type="file" accept="image/jpeg" class="image-uploader" id="thumbnails" style="display: none;" th:attr="data-target=${'thumbnails'}, data-url=@{/imagem/upload}, data-path=@{/imagem/download}" onchange="image_upload(this);"/>
        </button>
      </td>
      <td>
        <div class="gallery" id="gallery">
          <th:block th:each="img,stat : ${command.thumbnails}">
            <input type="hidden" th:field="*{thumbnails}" th:value="${img.id}"/>
            <img class="thumbnail" th:id="${'image_'+img.id}" th:src="@{/imagem/download/__${img.id}__}" th:alt="${command.nome}">
          </th:block>
        </div>
      </td>
    </tr>
  </table>

现在,该属性将与实体一起保留,不会出现问题

  <table>
    <tr>
      <td>
        <button type="button" onclick="add_single_imagem();" th:style="${command.icone}? 'display: none;' : 'display: block;'">
          <img class="thumbnail" th:src="@{/images/icon_add_imagem.png}" alt="adicionar icone"/>
          <input type="file" accept="image/jpeg" class="image-uploader" id="thumbnails" style="display: none;" th:attr="data-target=${'thumbnails'}, data-url=@{/imagem/upload}, data-path=@{/imagem/download}" onchange="image_upload(this);"/>
        </button>
      </td>
      <td>
        <div class="gallery" id="gallery">
          <th:block th:each="img,stat : ${command.thumbnails}">
            <input type="hidden" th:field="*{thumbnails}" th:value="${img.id}"/>
            <img class="thumbnail" th:id="${'image_'+img.id}" th:src="@{/imagem/download/__${img.id}__}" th:alt="${command.nome}">
          </th:block>
        </div>
      </td>
    </tr>
  </table>