当前位置: 首页 > 面试题库 >

~~保存~~ 是什么意思 ~~(S实体); 在Spring Repository中?~~

翟源
2023-03-14
问题内容

~~~~

在Spring Data项目中,CrudRepository为正在管理的实体类提供复杂的CRUD功能。

public interface CrudRepository<T, ID extends Serializable>
extends Repository<T, ID> {

    <S extends T> S save(S entity);

    T findOne(ID primaryKey);

    Iterable<T> findAll();

    Long count();

    void delete(T entity);

    boolean exists(ID primaryKey);

    // … more functionality omitted.
}

通常,我知道“ S扩展T”的含义,即保存操作的返回类型S必须是T的子类型。为什么必须添加诸如约束?我认为这样做是可以的:

T save (T entity);

void delete(T entity);

谢谢。


问题答案:

~~~~

如果你要拥有它

T save (T entity);

然后,您可以将结果分配给的唯一变量必须是type T

因此,如果您有一个CrudRepository<Animal,AnimalID> repository,并且您有

Dog dog = getDog();
Dog savedDog = repository.save(dog);

您会遇到编译错误-您无法将结果分配给Dog,因为它必须是类型T,在这种情况下为Animal

您需要检查返回的值是否确实是类型Dog,如果是,则将其强制转换DogsavedDog

声明保持原样,这意味着您可以将其分配给与原始参数相同类型的变量,因为类型解析允许这样做。

声明本身并没有指定如何保​​存狗的非动物部分。它所做的就是允许将结果Dog原本分配给a Dog



 类似资料:
  • 在Spring Data项目中,CrudRepository为正在管理的实体类提供了复杂的CRUD功能。 一般来说,我知道“S扩展T”的含义,即S,save操作的返回类型,必须是T的子类型。为什么需要添加约束之类的内容?我认为这样做很好: 如中所示 我在google上找到了更多的帮助,我找到了关于stackoverflow本身的以下问题,但我并不清楚: Spring Crudepository:为

  • 问题内容: 在Python中是什么意思?下面的代码有什么作用? 例如… 问题答案: 这是一种字符串格式语法(它是从C借用的)。 请参阅“ PyFormat”: Python支持将值格式化为字符串。尽管这可能包含非常复杂的表达式,但最基本的用法是使用占位符将值插入字符串。 编辑: 这是一个非常简单的示例: 该令牌允许我插入(和潜在的格式)的字符串。请注意,令牌被替换为符号后传递给字符串的任何内容。还

  • 问题内容: 什么是在这个CSS规则是什么意思? 问题答案: 是相邻的同级组合器。 这意味着选择只选择自带 之后 的。 插图: 选择了什么,没有选择什么: 选择 这个来之后第一。 未选择 这出现在第一后而不是在。由于它不会立即跟随,因此未选中。 但是,由于它仍然紧随元素之后,选择器不会立即匹配此元素,而是将使用通用的同级组合器来匹配该元素。 未选择 这位于内,并且在引号内没有满足其选择器的内容。

  • 问题内容: 我想知道 = + _ 运算符在JavaScript中的含义。看起来像是在做作业。 例: 问题答案: r = +_; 尝试将任何内容强制转换为数字。 只是一个变量名(不是运算符),可以是,等等。 例: 将“ 1”强制转换为纯数字1。 现在,不是。 此外,根据算术运算符的MDN页面: 一元加号运算符位于其操作数之前,并求值为其操作数,但是 尝试将其转换为数字(如果尚未转换为数字) 。 […

  • 问题内容: 嗨,我遇到了以下代码 这到底是怎么回事?我不确定“&”在做什么。 问题答案: 回答 该符号是按位与运算符。与1一起使用时,基本上会屏蔽该值以提取最低位,换句话说,它将告诉您该值是偶数还是奇数。 有关Python运算符的更多信息 有关更多信息,请参见:http : //wiki.python.org/moin/BitwiseOperators 为什么检查奇数与偶数比较有效 编辑:添加此部

  • 问题内容: 例如,我知道SELECT * FROM example_table; 方法。但是,不知道代码的每个部分意味着什么,我感到不舒服。我只是一个初学者,所以你们能帮我吗。非常感谢。 问题答案: 我通过分隔代码的每个部分为您提供答案。 SELECT ==它命令计算机包括或从数据库名称(表)中选择每个内容。 (*)==表示所有{这里的代码表示包括数据库中的所有内容。} FROM ==它是指我们必