JPA 归纳

一:hibernate  @Formula

在我们使用hibernate时经常会遇到某个实体类存放的是code值,而不是我们最终想要到页面看到的中文值。如果我们使用hibernate一对一关联这种,单个属性还比较方便,但是如果有多个这样的值就比较麻烦了。这个时候我们可以选择用hibernate的@Formula这个注解来解决。

@Formula(value = "(SELECT wm_concat(tp.id) FROM mk_product p INNER JOIN mk_product_type t ON p.id=t.product_id INNER JOIN mk_type tp ON t.type_id=tp.id where p.id=id group by p.id)")
	public String getTypes() {
		return types;
	}

	public void setTypes(String types) {
		this.types = types;
	}
mk_product:产品表  mk_type:产品类型表  mk_product_type产品类型关联表 。 产品表与产品类型表是多对多的关系.

@Formula中写的是纯SQL语句而非HQL语句,且SQL要写在@Formula("(SQL)")中,不要忘记双引号和括号。


二:spring date jpa 查询与更新

@Query(value="delete from ProductType pt where pt.product.id=?1")
 void deleteByProduct(String productId);
报的Not supported for DMLoperations

原因:用query()执行了insert或delete语句。

解决办法:加上 @Modifying

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值