我有加密和解密的监听器。 加密:
package com.myapp;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class MyFilter implements Filter
{
@Override
public void init(FilterConfig filterConfig)
{
// ...
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException
{
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse.addHeader("myHeader", "myHeaderValue");
chain.doFilter(request, httpResponse);
}
@Override
public void destroy()
{
// ...
}
}
问题在于解密部分。 如何修改加载数据而不将其保存在数据库中?现在它正在使用解密的onload更新加密数据。
谢谢
答案 0 :(得分:3)
您的问题是您不应该使用prePersist
事件,因为只有在您向该数据库添加实体时才会调用此事件,但在更新实体时则不会调用此事件。
在Doctrine生命周期事件列表here中,您可以看到您要使用的事件是preUpdate
,以便在每次更改时,它会在保存之前再次加密< / p>