1
0

fix(database): 补充事务注解

This commit is contained in:
2026-01-21 22:11:14 +08:00
parent 3692657b64
commit 2adf4951f7
3 changed files with 18 additions and 0 deletions

View File

@@ -64,16 +64,19 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity & ProxyEn
} }
} }
@Transactional(readOnly = true)
@Override @Override
public Long count() { public Long count() {
return entityQuery.queryable(target).count(); return entityQuery.queryable(target).count();
} }
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list() { public List<ENTITY> list() {
return entityQuery.queryable(target).toList(); return entityQuery.queryable(target).toList();
} }
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list(Set<Long> ids) { public List<ENTITY> list(Set<Long> ids) {
if (ObjectHelper.isEmpty(ids)) { if (ObjectHelper.isEmpty(ids)) {
@@ -87,6 +90,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity & ProxyEn
protected void commonPredicates(PROXY proxy) { protected void commonPredicates(PROXY proxy) {
} }
@Transactional(readOnly = true)
@Override @Override
public Page<ENTITY> list(Query query) { public Page<ENTITY> list(Query query) {
var index = DEFAULT_PAGE_INDEX; var index = DEFAULT_PAGE_INDEX;
@@ -115,12 +119,14 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity & ProxyEn
} }
@Named("detail") @Named("detail")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detail(Long id) { public ENTITY detail(Long id) {
return detailOptional(id).orElse(null); return detailOptional(id).orElse(null);
} }
@Named("detailOrThrow") @Named("detailOrThrow")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detailOrThrow(Long id) { public ENTITY detailOrThrow(Long id) {
return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id)); return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id));

View File

@@ -117,6 +117,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* *
* @return 返回符合条件的实体数量 * @return 返回符合条件的实体数量
*/ */
@Transactional(readOnly = true)
@Override @Override
public Long count() { public Long count() {
return repository.count(this::commonPredicates); return repository.count(this::commonPredicates);
@@ -130,6 +131,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* *
* @return 返回符合条件的实体列表 * @return 返回符合条件的实体列表
*/ */
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list() { public List<ENTITY> list() {
return repository.findAll(this::commonPredicates); return repository.findAll(this::commonPredicates);
@@ -144,6 +146,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* @param ids ID集合 * @param ids ID集合
* @return 返回ID集合对应的实体列表 * @return 返回ID集合对应的实体列表
*/ */
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list(Set<Long> ids) { public List<ENTITY> list(Set<Long> ids) {
if (ObjectHelper.isEmpty(ids)) { if (ObjectHelper.isEmpty(ids)) {
@@ -174,6 +177,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* @param listQuery 查询条件对象 * @param listQuery 查询条件对象
* @return 返回分页查询结果 * @return 返回分页查询结果
*/ */
@Transactional(readOnly = true)
@Override @Override
public Page<ENTITY> list(Query listQuery) { public Page<ENTITY> list(Query listQuery) {
var pageRequest = PageRequest.of(DEFAULT_PAGE_INDEX - 1, DEFAULT_PAGE_SIZE, Sort.by(SimpleEntity.Fields.createdTime).descending()); var pageRequest = PageRequest.of(DEFAULT_PAGE_INDEX - 1, DEFAULT_PAGE_SIZE, Sort.by(SimpleEntity.Fields.createdTime).descending());
@@ -242,6 +246,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* @return 返回实体详情不存在时返回null * @return 返回实体详情不存在时返回null
*/ */
@Named("detail") @Named("detail")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detail(Long id) { public ENTITY detail(Long id) {
return detailOptional(id).orElse(null); return detailOptional(id).orElse(null);
@@ -258,6 +263,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
* @throws IdNotFoundException 当实体不存在时抛出 * @throws IdNotFoundException 当实体不存在时抛出
*/ */
@Named("detailOrThrow") @Named("detailOrThrow")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detailOrThrow(Long id) { public ENTITY detailOrThrow(Long id) {
return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id)); return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id));

View File

@@ -47,16 +47,19 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
mapper.saveOrUpdate(entities); mapper.saveOrUpdate(entities);
} }
@Transactional(readOnly = true)
@Override @Override
public Long count() { public Long count() {
return (long) mapper.countAll(target); return (long) mapper.countAll(target);
} }
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list() { public List<ENTITY> list() {
return mapper.listAll(target); return mapper.listAll(target);
} }
@Transactional(readOnly = true)
@Override @Override
public List<ENTITY> list(Set<Long> ids) { public List<ENTITY> list(Set<Long> ids) {
return mapper.listByIds(target, ids); return mapper.listByIds(target, ids);
@@ -65,6 +68,7 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
protected void commonPredicates(Where where) { protected void commonPredicates(Where where) {
} }
@Transactional(readOnly = true)
@Override @Override
public Page<ENTITY> list(Query query) { public Page<ENTITY> list(Query query) {
var chain = QueryChain.of(mapper, target); var chain = QueryChain.of(mapper, target);
@@ -98,12 +102,14 @@ public abstract class SimpleServiceSupport<ENTITY extends SimpleEntity> implemen
} }
@Named("detail") @Named("detail")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detail(Long id) { public ENTITY detail(Long id) {
return detailOptional(id).orElse(null); return detailOptional(id).orElse(null);
} }
@Named("detailOrThrow") @Named("detailOrThrow")
@Transactional(readOnly = true)
@Override @Override
public ENTITY detailOrThrow(Long id) { public ENTITY detailOrThrow(Long id) {
return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id)); return detailOptional(id).orElseThrow(() -> new IdNotFoundException(id));