当前位置: 首页 > 知识库问答 >
问题:

在@Transactional Annotations中设置默认事务管理器?

从光启
2023-03-14

我有一个带有JPA/Hibernate的Spring Boot2.x应用程序和两个单独的事务管理器:每个租户1个,应用程序范围1个。所有实体、存储库和服务都被分离在不同的包中。

有没有一种方法可以在包级别上设置事务管理器,这样我就不必在每次使用时都显式地设置它?

基于使用@transactional注释的多个事务管理器中给出的答案,我创建了@tenanttransaction@applicationtransaction元注释,但这不允许我设置readonly标志,这是每个方法所必需的。

共有1个答案

金旺
2023-03-14

给定答案,并且您已经@tenanttransactional@applicationtransactional,您可以简单地为readonly使用别名。可以使用@aliasfor添加别名。

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("tenantTransactionManager")
public @interface TenantTransactional {

  @AliasFor(attribute="readOnly", annotation=Transactional.class)
  boolean readOnly() default false;
}

当然,对于@transactional注释的其他属性也可以这样做。

 类似资料:
  • 10.6. 默认事务设置 默认情况下事务设置(语义)如下: 异常处理:RuntimeException 导致回滚,而普通异常(checked )则不会 事务可读可写 隔离级别:TransactionDefinition.ISOLATION_DEFAULT 超时设置:TransactionDefinition.TIMEOUT_DEFAULT org.springframework.transacti

  • 问题内容: 有没有一种方法可以在共享首选项中设置默认值? 这是我的负载偏好代码 这是我的保存偏好代码 问题答案: 当您使用键和值设置首选项时,实际上是在提供该值。因此,这次不必使用默认值。请参见,在检索该值时,如果以前未设置该值,则可以定义一个默认值。 如果您得到strSavedMem1 =“ default”,那么肯定是默认情况,因为您没有在首选项中为MEM1设置任何其他值

  • 我不确定是否正确集成? 可以从获取数据源吗? Hiberante配置与是否正确? 由于它嵌入在JVM中,不由容器管理,JTATransactionManager能够识别ActimeMQ吗?

  • 我知道DateTimeFormat注释可以在Spring中的模型类的日期属性上定义,但是有没有任何方法可以为Spring模型类中的所有日期定义一个默认的DateTimeFormat注释呢? @DateTimeFormat(pattern=“MM/DD/YYYY”) 私人日期DeliveryDate; 它将使我不必对每个日期字段进行注释。它还将使我更容易更改应用程序宽日期格式以后。

  • 什么是Locale Locale是一组描述世界上某一特定区域文本格式和语言习惯的设置的集合。locale名通常由三个部分组成:第一部分,是一个强制性的,表示语言的缩写,例如"en"表示英文或"zh"表示中文。第二部分,跟在一个下划线之后,是一个可选的国家说明符,用于区分讲同一种语言的不同国家,例如"en_US"表示美国英语,而"en_UK"表示英国英语。最后一部分,跟在一个句点之后,是可选的字符集

  • 当我第一次部署应用程序时,它将在我的数据库中创建这个表。 我的问题是:有没有办法在创建表时,用firstname和它一起创建一个管理用户?