因为对jpa不太熟,遇到jpa的使用问题,搞了半个多小时,特此记录一下,
其他语句网上都有现成的资料。
@Transactional(rollbackFor = Exception.class)
@Modifying
@Query(value = "INSERT into card (cid,catk,cdef,chp,cms,cas,camp,cname,cpow) values (:#{#card.cid},:#{#card.catk},:#{#card.cdef},:#{#card.chp},:#{#card.cms},:#{#card.cas},:#{#card.camp},:#{#card.cname},:#{#card.cpow})",nativeQuery = true)
int saveOne(Card card);
刚开始只是#{#xx}这样写,实际上要添加:,如:#{#xx},才能将实体类里面的参数传进去
@
Query
(value = select username from user,native
Query
= true)
// 注意返回值用String类型接收,也可以使用Object
String findOneUserName();
二、单表查询的一个字段、多条数据
@
Query
(value = select distinct username from user,native
Query
= true)
// 注意返回值用String类型接收,也可以使用Object
List findAllUserName();
三、多表查询的多个字段、一条数
我們使用
Spring
Framework裡,在Service 的 Method 給予@Transactional 系統就會去管理transaction,我們是在哪裡做了甚麼設定嗎?
為什麼下的這個Annotation成功會commit失敗會rollback呢?
Transaction 管理做了哪些事情呢?
今天做项目遇到了一个问题,是以前没注意的。我用的是
Spring
MVC+ Hibernate
JPA
+ My
SQL
数据库
。在插入数据后
SQL
执行日志中会多出一条select语句: 代码如下:Hibernate: insert into click_statstic (logDate, memoId, src, typeId) values (?, ?, ?, ?)Hibernate: select last_insert_id()表中有个主键是自增列。可是在以往的项目中,没发现有这样的问题。于是在网上各种找也找不到原因。心想可能是配置问题。
最终在persistence.xml配置文件中找
启动
JPA
程序本项目中,使用Hibernate作为隐藏在
JPA
幕后的ORM框架。在
Java
EE环境中,由应用服务器负责启动
JPA
。包含持久化单元(内含
实体
、值对象、映射元数据和persistence.xml文件)的工件(war或ear存档文件)被部署到应用服务器之后,应用服务器会扫描持久化单元,读取persistence.xml文件和映射元数据,据此启动
JPA
程序。在
Java
SE环境下,由应用...
0、我们在前后端
传
递数据时候,
参数
多的情况下,常常将这些
参数
封装成对象;当有些场景你需要使用
JPA
native
Query
自定义
SQL
,要将这个对象insert时候,初学者似乎有点犯难,
jpa
不是
spring
-data项目的内容吗,所以在
sql
中也是支持SPEL表达式来获取
参数
,运用这个思路可以继续。注意以上获取属性的办法 :#{#
参数
对项目,属性} 获取到对象的属性。
* Specifies methods used to obtain and modify person related information
* which is stored in the database.
* @author Petri Kainulainen
public interface PersonRepository extend...
一、
Jpa
接口自定义
sql
注解@
Query
@
Query
注解,使用注解有两种方式,一种是JPQL的
SQL
语言方式,一种是原生
SQL
的语言,略有区别,代码中具体区别是native
Query
属性是否为true,我们一般使用的都是原生
SQL
的语言,需要加native
Query
= true
不带
参数
的
sql
@
Query
(value = "select count(1) code,hdt.type data from history_design_theme hdt where 1=1 GROUP