【问题标题】:Rows are being deleted after fetch on from @ElementCollection从@ElementCollection 获取后正在删除行
【发布时间】:2014-10-20 08:26:46
【问题描述】:

我创建了一个名为 Media 的 Entity,其中包含与 Media 相关的标签列表。我使用@ElementCollection 来保存标签。我已经根据这篇文章对其进行了注释问题是当我阅读该字段时,我第一次获得了内容,但它被删除了。

我创建了一个存储库:

MRepo:

public interface MRepo extends CrudRepository<Media, String> {}

当我使用该服务获取媒体时,会发生删除:

...    
@Autowired
    MediasRepository mediasRepository;

    public MediaReadEvent findMedia(String mediaID){
    Media media = mediasRepository.findOne(mediaID);
...

休眠 SQL 日志:

hibernate: select tags0_.media_name as media_na1_2_0_, tags0_.tag_name as tag_name2_12_0_, tags0_.tags_ORDER as tags_ORD3_0_ from media_tags tags0_ where tags0_.media_nam
?
hibernate: delete from media_tags where media_name=?
hibernate: select tags0_.media_name as media_na1_2_0_, tags0_.tag_name as tag_name2_12_0_, tags0_.tags_ORDER as tags_ORD3_0_ from media_tags tags0_ where tags0_.media_nam
?
hibernate: delete from media_tags where media_name=?
hibernate: select tags0_.media_name as media_na1_2_0_, tags0_.tag_name as tag_name2_12_0_, tags0_.tags_ORDER as tags_ORD3_0_ from media_tags tags0_ where tags0_.media_nam
?
hibernate: delete from media_tags where media_name=?

媒体实体:

@Entity
public class Media {
  @Id
  @NotNull
  @Column(name = "mediaid")
  private String mediaId;
  ...
//    @NotNull
    @ElementCollection(fetch = FetchType.LAZY)
    @CollectionTable(
            name="media_tags",
            joinColumns=@JoinColumn(name="media_name")
    )
    @Column(name="tag_name")
    @OrderColumn
    private List<String> tags;


  public List<String> getTags() {
    return tags;
  }

  public void setTags(List<String> tags) {
    this.tags = tags;
  }
  ...
}

以防万一,我正在使用: postgresql - 9.2-1003-jdbc4 spring-data-jpa - 1.5.1.RELEASE 春天 - 3.2.8.RELEASE

【问题讨论】:

  • 哪个代码导致您发布的 SQL 日志?你在做什么?
  • @JBNizet 嘿,我添加了请求的信息。让我知道是否缺少其他内容。谢谢

标签: hibernate postgresql jpa spring-data


【解决方案1】:

有什么解决办法吗?我好像遇到了同样的问题。

也许是this question and answer is helpful

我发现从版本 4.2.7 (Redhat) 更新到版本 4.3.1.Final-redhat-1 后,我遇到的同样问题似乎消失了。我也在使用 ENABLE_LAZY_LOAD_NO_TRANS 功能。

【讨论】:

  • 无法修复,所以我创建了实体。
  • 我刚刚编辑了我更新的版本和我的测试用例似乎正在工作,虽然我需要做更多的测试。
猜你喜欢
  • 2013-11-03
  • 2011-04-14
  • 1970-01-01
  • 2015-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
相关资源
最近更新 更多