在 Java 中,当使用 Hibernate 进行 CRUD 时,我们如何从初始 Resteasy 请求中访问 Header 值
in Java when Using Hibernate for CRUD how could we access a Header value from the initial Resteasy request
我需要 Java 专家的帮助。
我想存储 用户 如何使用 Hibernate 的 @PreUpdate
.
修改数据库字段中的记录 table
用户名由反向代理在 header 字段 x-remote-user
中设置。我可以访问它,如下所示
@GET
@Path("/getuser")
public String get( @HeaderParam("x-remote-user") String userName) {
return userName;
}
有没有办法在我的 JPA 实体 bean 中注入 @HeaderParam
?我应该查找反射吗?
这没有用:
@Entity
@Table(name = "t_companies")
public class TBusiness extends PanacheEntityBase {
@Column(name = "company_name", nullable = true)
public String companyName;
@Column(name = "updated_by", nullable = true)
public String updatedBy;
@PreUpdate
public void preUpdate(@HeaderParam("x-remote-user") String userName) {
updatedBy = userName;
}
}
让我重新表述我的问题
我正在使用 Panache 数据 REST CRUD 生成
有没有办法从 @RequestScoped
class
访问保存用户名的 header 值
然后在 @PreUpdate
上的 JPA 实体中使用这个值?
通过添加 undertow 依赖项使其工作:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-undertow</artifactId>
</dependency>
然后在 EntityListener
class 下面创建 PrePersist
方法:
@RequestScoped
// @Path("api/v1/Header")
public class AuditingEntityListener {
private static final Logger LOG = Logger.getLogger(AuditingEntityListener.class);
// Inject the bean so that Quarkus does not remove it at build time (IMPORTANT)
@Inject
HttpServletRequest requestNotUsed;
@PrePersist
void onPrePersist(TBusiness myEntity) {
HttpServletRequest HSR = CDI.current().select(HttpServletRequest.class).get();
LOG.info("HSR getRequestHeader user: " + HSR.getHeader("x-remote-user"));
}
}
我需要 Java 专家的帮助。
我想存储 用户 如何使用 Hibernate 的 @PreUpdate
.
用户名由反向代理在 header 字段 x-remote-user
中设置。我可以访问它,如下所示
@GET
@Path("/getuser")
public String get( @HeaderParam("x-remote-user") String userName) {
return userName;
}
有没有办法在我的 JPA 实体 bean 中注入 @HeaderParam
?我应该查找反射吗?
这没有用:
@Entity
@Table(name = "t_companies")
public class TBusiness extends PanacheEntityBase {
@Column(name = "company_name", nullable = true)
public String companyName;
@Column(name = "updated_by", nullable = true)
public String updatedBy;
@PreUpdate
public void preUpdate(@HeaderParam("x-remote-user") String userName) {
updatedBy = userName;
}
}
让我重新表述我的问题
我正在使用 Panache 数据 REST CRUD 生成
有没有办法从 @RequestScoped
class
然后在 @PreUpdate
上的 JPA 实体中使用这个值?
通过添加 undertow 依赖项使其工作:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-undertow</artifactId>
</dependency>
然后在 EntityListener
class 下面创建 PrePersist
方法:
@RequestScoped
// @Path("api/v1/Header")
public class AuditingEntityListener {
private static final Logger LOG = Logger.getLogger(AuditingEntityListener.class);
// Inject the bean so that Quarkus does not remove it at build time (IMPORTANT)
@Inject
HttpServletRequest requestNotUsed;
@PrePersist
void onPrePersist(TBusiness myEntity) {
HttpServletRequest HSR = CDI.current().select(HttpServletRequest.class).get();
LOG.info("HSR getRequestHeader user: " + HSR.getHeader("x-remote-user"));
}
}