Java 我如何在预科生批注中使用JPARepository?

Java 我如何在预科生批注中使用JPARepository?,java,postgresql,spring-boot,jpa,spring-data-jpa,Java,Postgresql,Spring Boot,Jpa,Spring Data Jpa,我有一个事务性的警报表和一个主警报类型表。每当向表中添加警报时,我都会发送电子邮件,所以我想我应该使用PrePersist。但是,在我的电子邮件中,我想包括警报类型表中包含的一些信息 我已尝试在Alert类中添加对AlertTypeRepository的引用,但无法添加,因为我的Alert类是@Table,而AlertTypeRepository不是列 下面是我的警觉课 @Entity @Table @Getter @Setter @NoArgsConstructor @AllArgsC

我有一个事务性的警报表和一个主警报类型表。每当向表中添加警报时,我都会发送电子邮件,所以我想我应该使用PrePersist。但是,在我的电子邮件中,我想包括警报类型表中包含的一些信息

我已尝试在Alert类中添加对AlertTypeRepository的引用,但无法添加,因为我的Alert类是@Table,而AlertTypeRepository不是列

下面是我的警觉课

@Entity 
@Table 
@Getter 
@Setter 
@NoArgsConstructor
@AllArgsConstructor
public class Alert {
    @Id
    @GeneratedValue
    int id;
    @Column
    String name;
    @Column
    String alertTypeId;
    @Column
    String detailedMessage;
    @Column
    String status;
    @Temporal(TemporalType.TIMESTAMP)
    Date time;
}
下面是我的AlertType类

@Entity 
@Table 
@Getter 
@Setter 
@NoArgsConstructor
@AllArgsConstructor
public class AlertType {
    @Id
    @GeneratedValue
    int id;
    @Column
    String name;
    @Column
    String header;
    @Column
    String footer;
    @Column
    String summary;
    @Column
    String deliveryType;
    @Column
    Boolean active ;
    @Column
    String recipients;
}

我希望在Alert类中有一个PrePersist函数。这允许我从AlertType类访问其相应的页眉和页脚。

我想出了一个解决方案,所以我希望这能帮助任何面临类似问题的人。基本上,我必须为Alert类创建一个EntityListener,然后添加以下类

@Component
public class AlertListener {

    static AlertTypeRepository alertTypeRepository;

    @Autowired
    public void init(AlertTypeRepository alertTypeRepository)
    {
         this.alertTypeRepository = alertTypeRepository;

    }

    @PrePersist
    public void prePersist(Alert alert) {
        List<AlertType> alertType=  this.alertTypeRepository.findAll();

    }
}
@组件
公共类AlertListener{
静态AlertTypeRepository AlertTypeRepository;
@自动连线
公共void init(AlertTypeRepository AlertTypeRepository)
{
this.alertTypeRepository=alertTypeRepository;
}
@预科生
public void prePersist(警报){
List alertType=this.alertTypeRepository.findAll();
}
}

我想出了一个解决方案,所以我希望这能帮助任何面临类似问题的人。基本上,我必须为Alert类创建一个EntityListener,然后添加以下类

@Component
public class AlertListener {

    static AlertTypeRepository alertTypeRepository;

    @Autowired
    public void init(AlertTypeRepository alertTypeRepository)
    {
         this.alertTypeRepository = alertTypeRepository;

    }

    @PrePersist
    public void prePersist(Alert alert) {
        List<AlertType> alertType=  this.alertTypeRepository.findAll();

    }
}
@组件
公共类AlertListener{
静态AlertTypeRepository AlertTypeRepository;
@自动连线
公共void init(AlertTypeRepository AlertTypeRepository)
{
this.alertTypeRepository=alertTypeRepository;
}
@预科生
public void prePersist(警报){
List alertType=this.alertTypeRepository.findAll();
}
}

据我所知,有两种方法可以实现归档目的。您的alterType不是由Spring管理的

  • 定义一个JPA
    EntityListener
    ,并将其应用到您的entity类上,您似乎对此不感兴趣
  • 第二种方法,使用Spring
    @可配置的
    注释对实体进行注释:
  • 让它工作。首先,您必须将
    aspectj
    相关JAR添加到项目依赖项中。其次,您可以选择加载时编织或编译时编织来为您的类处理注入


    Maven中有一个插件可用于编译时编织(注意,仅针对aspectj编译器Maven插件配置,我在这里没有使用@Configurable。)。

    我知道有两种方法可用于归档目的。您的alterType不是由Spring管理的

  • 定义一个JPA
    EntityListener
    ,并将其应用到您的entity类上,您似乎对此不感兴趣
  • 第二种方法,使用Spring
    @可配置的
    注释对实体进行注释:
  • 让它工作。首先,您必须将
    aspectj
    相关JAR添加到项目依赖项中。其次,您可以选择加载时编织或编译时编织来为您的类处理注入

    Maven中有一个可用于编译时编织的插件(注意,对于aspectj编译器Maven插件配置,我没有在这里使用@Configurable)