Spring JPA存储库findOne(),其ID列名为" name"

时间:2015-05-06 22:15:50

标签: spring-data spring-data-jpa

我在文档中找不到任何关于此的内容但是findOne()/ getOne()只是findById()的别名吗?

我有一个看起来像这样的实体

public class Tag {
  @Id
  private String name;
  ...
}

和这样的存储库:

@Repository
public interface TagRepository extends JpaRepository<Tag, String> {
  Tag findByName(String name);
}

这段代码工作正常:

void saveTag() {
  Tag tag = repository.findByName("test");
  if (tag == null)
    tag = new Tag("test");
  tag.save();
}

saveTag();
saveTag();

但是这会爆发:

void saveTag() {
  Tag tag = repository.findOne("test");
  if (tag == null)
    tag = new Tag("test");
  tag.save();
}

saveTag();
saveTag();

此时我得到一个DuplicateKeyException,因为对findOne()的调用总是返回null,即使它存在于DB

0 个答案:

没有答案