当前位置: 首页 > 知识库问答 >
问题:

@ColumnTransformer选择列时没有别名

端木令雪
2023-03-14

我需要加密和解密一些列这样的。

@Entity
@Table(name = "Person")
@Data
public class Person {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID", unique = true, nullable = false)
    private Long id;

    @Column(name = "NAME", columnDefinition = "varchar")
    @ColumnTransformer(read = "pgp_sym_decrypt(decode(NAME, 'hex'), 'key')", write = "encode(pgp_sym_encrypt(?, 'key'), 'hex')")
    private String name;

    @ManyToOne
    @JoinColumn(name = "PARENT_ID")
    private Person parent;

}


这句话的意思是:

当我使用PersonRepository.findOneByParentId(10L)时;并查看日志 sql 是

    select
        person0_."id" as id1_99_,
        pgp_sym_decrypt(decode(NAME, 'hex'), 'key') as name2_99_
    from
        "public"."person" person0_
    left outer join
        "public"."person" person1_
            on person0_."parent_id"=person1_."id" 
    where
        person1_."id"=?


这句话的意思是:

此错误消息

ERROR: column reference "name" is ambiguous


这句话的意思是:

为什么@ColumnTransformer不添加列“name”的表别名,我该怎么办

共有1个答案

姬安志
2023-03-14

我有这个问题,添加forColumn属性对我有用。

@列变压器(forCol列="lastName",

 类似资料:
  • JdbcTransfersDao。java: 控制器。Java语言 转让。Java语言

  • 问题内容: 我想了解MySQL中的某些特定行为。运行“ select @@ version”,我看到我的版本是5.6.34-log。 让我使用生成的表放置样本,以使其更易于重现: 正如标题所建议的那样,我最初搜索的是如何通过别名选择列,以便重用计算所得的字段,从而避免了冗长的查询。如文档中所述,大多数答案要么建议使用子查询,要么使用变量- 一种可读性差,而另一种则不能由自己的数据库开发人员来保证。

  • 问题内容: 我想知道如何使用JavaScript(而不是jQuery)选择没有特定类的元素。 例如,我有以下列表: 然后通过以下方式选择完成的任务: 但是然后我不确定如何选择没有这些类的列表项。 问题答案: 这将选择第二个元素。 要么 例:

  • 本文向大家介绍MySQL 选择所有列(*),包括了MySQL 选择所有列(*)的使用技巧和注意事项,需要的朋友参考一下 示例 询问 结果 您可以通过执行以下操作从一个连接的一个表中选择所有列: 最佳实践*除非正在调试或获取row(s)关联数组,否则不要使用,否则架构更改(ADD / DROP /重新排列列)可能会导致讨厌的应用程序错误。另外,如果提供结果集中所需的列列表,MySQL的查询计划程序通

  • 问题内容: 我想根据一个简单的标准更新一组行,并获取已更改的PK列表。我以为我可以做这样的事情,但担心可能出现的并发问题: 如果将其包装在事务中,是否会发生任何并发问题?还是有更好的方法来做到这一点? 问题答案: 考虑查看OUTPUT子句:

  • 问题内容: 如果我只需要2/3列,而是查询而不是在select查询中提供这些列,那么关于更多/更少I / O或内存的性能是否会有所下降? 如果我确实选择了*,则可能会出现网络开销。 但是在选择操作中,数据库引擎是否总是从磁盘中提取原子元组,还是仅提取在选择操作中请求的那些列? 如果它总是拉一个元组,则I / O开销是相同的。 同时,如果它拉出一个元组,从元组中剥离请求的列可能会占用内存。 因此,在