customrepository与org.springframework.data.repository.crudrepository中的save冲突返回类型java.lang.long与s不兼容

33qvvth1  于 2021-07-22  发布在  Java
关注(0)|答案(2)|浏览(334)

我试图在db中保存一个记录,作为回报,它应该返回主键。
这是我的实体类:

@Entity
public class CustomEntity {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
private Integer eventTypeId;
//getter setter here
}

我的存储库在这里:

public interface CustomRepository extends JpaRepository<CustomEntity, Long> {
Long save(customRepository);
}

当我尝试调用服务类中的存储库接口时,在编译时出现以下异常:

Error:(32, 8) java: save(model.CustomEntity) in repository.CustomRepository clashes with <S>save(S) 
in org.springframework.data.repository.CrudRepository return type java.lang.Long is not compatible with S

我知道jpa存储库扩展了分页和排序,这在返回中扩展了crudepository,我该如何解决这个问题。

3htmauhk

3htmauhk1#

方法签名为

<S extends T> S save(S entity)

因此,需要返回与作为参数传递的类型相同的类型。对你来说 CustomEntity .

nr7wwzry

nr7wwzry2#

参数的类型和返回值应该相同。尝试更改代码:

public interface CustomRepository extends JpaRepository<CustomEntity, Long> {
CustomEntity save(customRepository);
}

然后从 CustomEntity 对象,例如:

public void someMethod(){
  CustomEntity entity = repo.save(new CustomEntity());
  Long savedId = entity.getId();
}

相关问题