在Spring Data中是否可以使用实体的唯一属性删除实体?

时间:2014-01-06 07:56:21

标签: java spring jpa spring-data

是否可以使用实体的唯一属性删除实体?

在Spring Data 1.4.3.RELEASE中,添加通过唯一属性查找的方法非常简单,但是我没有找到一种方法来删除它。

在下面的代码中,Spring自动处理findByAddress是否有类似删除的东西?
void deleteByAddress(String hwAddress);之类的东西,我已将其添加到TerminalRepository,但它不起作用。

public Terminal {
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 private long id;
 @Column(unique=true)
 private String hwAddress;
 ...
}


public interface TerminalRepository extends
    CrudRepository<Terminal, Long> {

Terminal findByAddress(String hwAddress);

}

当然可以通过address找到实体,然后使用delete(Terminal)方法将找到的实体作为参数传递。但这在性能方面不会很好,因为它会对数据库数据库进行一次不必要的调用,即一次可以调用查找对象,另一次调用删除它

2 个答案:

答案 0 :(得分:0)

我认为没有内置任何内容。您必须使用自定义方法支持来自行推送:

http://docs.spring.io/spring-data/jpa/docs/1.4.3.RELEASE/reference/html/repositories.html#repositories.custom-implementations

答案 1 :(得分:0)

我遇到了同样的问题。但是,当我使用@Modifying在存储库接口中注释方法时,它开始工作。但是,我不知道它是如何开始工作的。谁能解释一下?