springdatajpa向数据库中添加记录怎样顺便直接返回记录的id

springdatajpa向数据库中添加记录怎样顺便直接返回记录的id,第1张

你这个findone(id)是用自己的@Query注解的jpql语句?

如果不是,方法应该是findOne(Interger id)才对,可但是你这个实体类哪里有id的字段;

你也可以试试findBy字段这种方式

另外注意下几个Repository接口的细微区别,会不会问题出在接口选择上面!

persist(),是保存,跟save()方法一样,知识jpa官方说叫persist比较好一些,更接近持久化的含义。而merge()是合并的意思,就是当你保存的实体,根据主键id划分,如果已存在,那么就是更新 *** 作,如果不存在,就是新增 *** 作。

persist会把传进去的实体放到持久化上下文中,此时如果持久化上下文中有了这个实体,就会抛出javax.persistence.EntityExistsException,没有的话事务提交的时候把那个对象加进数据库中,如果数据库中已经存在了那个对象(那一行),就会抛出com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException;

而merge会在持久化上下文中生成传进去的实体的受管版本,如果已经有了受管版本,那也不会抛出异常,然后把那个受管的实体返回出来,事务提交的时候如果数据库中不存在那个对象(那一行),就把把那个受管的加进去,存在的话就替换掉原来的数据。merge是如果持久化上下文中有了受管版本,那就更新,没有就复制一份,返回受管的。

用 @@IDENTITY

DECLARE @Res INT OUTPUT

你要定义一个OUTPUT的函数,

当插入数据之后,加上一个 SET @Res =@@IDENTITY

C#程序里用 取@Res 这个参数就得到了这个 最后一次插入的ID值了。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11877953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存