Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有身份验证的情况下更新字段?_Java_Spring_Spring Boot_Spring Security_Spring Data - Fatal编程技术网

Java 如何在没有身份验证的情况下更新字段?

Java 如何在没有身份验证的情况下更新字段?,java,spring,spring-boot,spring-security,spring-data,Java,Spring,Spring Boot,Spring Security,Spring Data,更新计数器时如何不更新auditor 在我的数据库中,我有一个名为products的表,我想实现一个访问计数器。这意味着任何未经身份验证的人都可以访问此产品。基于此,我收到以下错误,因为它正在尝试更新Auditor(Anonyous): java.lang.ClassCastException:java.lang.String不能强制转换为bla.bla.bla.UserEntity 是否有任何注释告诉spring,属性可以在没有授权的情况下更新 一些代码: @Entity @EntityLis

更新计数器时如何不更新auditor

在我的数据库中,我有一个名为products的表,我想实现一个访问计数器。这意味着任何未经身份验证的人都可以访问此产品。基于此,我收到以下错误,因为它正在尝试更新Auditor(Anonyous):

java.lang.ClassCastException:java.lang.String不能强制转换为bla.bla.bla.UserEntity

是否有任何注释告诉spring,属性可以在没有授权的情况下更新

一些代码:

@Entity
@EntityListeners(AuditingEntityListener.class)
@Table(name = "Products")
public class ProductEntity extends Auditable<UserEntity> {

...

@NotNull
private Long visit = 0L;

... getters and setters ...
}

为了回答这个问题,我创建了一个新的访问表,没有auditor,工作非常完美。

您面临的问题是关于身份验证,还是关于强制转换对象?当我“.save”时,因为auditor spring文档会根据登录的用户自动插入用户。在这种情况下,该用户不是已登录的用户,因此,已登录的用户是一个字符串“匿名”
@Controller
@RequestMapping(value="/product")
public class productController {

    @Autowired
    ProdutoRepository produtoRepository;

    @RequestMapping(value = "/{idProduct}", method=RequestMethod.GET)
    public ModelAndView findProduct(
            @PathVariable(value="idProduct") int produtoRepository,
            RedirectAttributes redirectAttributes,
            Model model){


        ProductEntity p = produtoRepository.findOne(produtoRepository);

        p.setVisit(p.getVisit() + 1);
        produtoRepository.save(p);

        ...
    }

    ...
}