【问题标题】:How to protect columns in hibernate from being read如何保护休眠中的列不被读取
【发布时间】:2015-07-13 08:07:19
【问题描述】:

假设我有模型配置和用户。 在配置中,我指定与用户的关系,如下所示: @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name= "user") private User author;

然后,当我想要每个特定用户的所有配置时,我会得到如下信息: {"id":1,"key":"Layout","value":"boxed","author":{"id":1,"name":"Roy","login":"roy","password":"spring"}}

我该如何保护

【问题讨论】:

  • from being read 是我不明白的......跨度>
  • 您是否要加密密码或从 JSON 响应中删除条目?请指定在这种情况下您使用什么进行 Json 解析..

标签: java hibernate jpa passwords


【解决方案1】:

我不确定这是否能解决您的问题。但它看起来像是典型的需要 View 而不是直接获取表。

在视图中,您可以控制要读取或不读取的所有列。

【讨论】:

    【解决方案2】:

    没有休眠读取保护的方法。您可以使用声明(insertable = false,updatable = false)保护文件不被更新或插入。 如果您不想将某些字段提供给用户,则应使用高级逻辑,例如过滤 Json 中的字段。

    【讨论】:

    • 谢谢。我发现了一些关于延迟获取类型的东西,我可以在其中实现它,或者我应该像你说的那样在控制器中的 json 返回之前做一些事情。
    • @Admir Šabanović Lazy 不适用于简单类型或 OneToOne 引用(如果它们被标记为可为空)。如果 nullable=false 可能会成功。
    【解决方案3】:

    我找到了解决方案。在实体类中,如果我加入列我可以简单地注解@JsonIgnoreProperties({"prop1", "prop2"}),或者如果是标准类型属性@JsonIgnore就足够了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-15
      • 2019-12-10
      • 2011-12-16
      • 1970-01-01
      • 2010-12-23
      • 1970-01-01
      相关资源
      最近更新 更多