根据ID做新增或者update,主键上打@Id。
一 Spring Data Jpa的更新删除:
JPA可以看作标准化的Hibernate。虽然规定了基本的缓存接口,但是具体实现还是要看具体产品。
可以通过Hibernate进行了解。更新删除的时候JPA都需要先维护缓存才可以删除。如果你要直接删除,必须自己写EQL语句。
二 spring data jpa 怎么使用序列:
1 JPA - 简化创建 JPA 数据访问层和跨存储的持久层功能。
2 Hadoop - 基于 Spring 的 Hadoop 作业配置和一个 POJO 编程模型的 MapReduce 作业。
3 Key-Value - 集成了 Redis 和 Riak ,提供多个常用场景下的简单封装。
4 Document - 集成文档数据库:CouchDB 和 MongoDB 并提供基本的配置映射和资料库支持。
5 Graph - 集成 Neo4j 提供强大的基于 POJO 的编程模型。
6 Graph Roo AddOn - Roo support for Neo4j。
JDBC Extensions - 支持 Oracle RAD、高级队列和高级数据类型
你这个findone(id)是用自己的@Query注解的jpql语句?如果不是,方法应该是findOne(Interger id)才对,可但是你这个实体类哪里有id的字段;
你也可以试试findBy字段这种方式
另外注意下几个Repository接口的细微区别,会不会问题出在接口选择上面!
两种方式:方式1:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解
@Id
@SequenceGenerator(name="名称A", sequenceName="库中已存在的sequence名称",allocationSize=递增值)
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="名称A")
方式2:假设Bean的属性xxx为主键,则在getXxx() 前添加以下注解
@Id
@TableGenerator(name="名称A",allocationSize=递增值)//若不指定递增值,则生成的主键值不一定连续
@GeneratedValue(strategy=GenerationType.TABLE, generator="名称A")
总结:方式1:针对Oracle效率略高,但需要手工创建sequence才能使用。
方式2:不依赖数据库,可移植性好,但相比方式1,效率略低。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)