Java @柱状变压器不';t在select中使用

Java @柱状变压器不';t在select中使用,java,hibernate,Java,Hibernate,[EDIT]找到了解决方案: 问题在于主键是字段用户名。Hibernate似乎没有处理这个问题。所以我将主键切换到另一个字段来修复它,它就工作了 我正在尝试对我的数据库使用加密,但在获取数据时遇到了一些问题 列转换器未在select子句中使用,但在where子句中工作 当查询是表的select*时,会出现此错误,如: public interface UserRepository extends JpaRepository<User, String> {

[EDIT]找到了解决方案:

问题在于主键是字段用户名。Hibernate似乎没有处理这个问题。所以我将主键切换到另一个字段来修复它,它就工作了


我正在尝试对我的数据库使用加密,但在获取数据时遇到了一些问题

列转换器未在select子句中使用,但在where子句中工作

当查询是表的select*时,会出现此错误,如:

    public interface UserRepository extends JpaRepository<User, String> {

        @Query(value = "select a from User as a where username = :username")
        AdminUser findByUsername(@Param("username") String username);

    }
如果出现以下查询:

@Query(value = "select a.username from User as a where username = :username")
select子句被解密

知道Hibernate为什么不在select中使用columnTransformer吗? 谢谢

@Table(name=“my\u user\u Table”)
公共类用户扩展AbstractEntity实现UserDetails{
@身份证
@列(name=“username”,nullable=false,unique=true,columnDefinition=“${encryption.Column.definition}”)
@柱状变压器(
forColumn=“用户名”,
read=“${User.username.read}”,
write=“${User.username.write}”)
私有字符串用户名;
@列(name=“password”,null=false)
私有字符串密码;
@Column(name=“email”,nullable=false,columnDefinition=“${encryption.Column.definition}”)
@柱状变压器(
read=“${User.email.read}”,
write=“${User.email.write}”)
私有字符串邮件地址;
@列(name=“password\u expiration\u date”,null=false)
私有日期密码ExpirationDate;
@OneToMany(targetEntity=OldPassword.class,fetch=FetchType.LAZY,cascade={CascadeType.ALL},orphanRemoving=true)
@JoinColumn(name=“username”,nullable=true)
@订购人(“creationDate desc”)
私人密码列表;
/**
*使用此字段手动启用或禁用帐户
*/
@列(name=“enabled”,columnDefinition=“bit default 0”,nullable=false)
启用私有布尔值;
@短暂的
私人收藏
@Query(value = "select a.username from User as a where username = :username")
     @Table(name = "my_user_table")
    public class User extends AbstractEntity implements UserDetails {

        @Id
        @Column(name = "username", nullable = false, unique = true, columnDefinition = "${encryption.column.definition}")
        @ColumnTransformer(
                  forColumn = "username",
                  read ="${User.username.read}", 
                  write ="${User.username.write}")  
        private String username;

        @Column(name = "password", nullable = false)
        private String password;


        @Column(name = "email", nullable = false, columnDefinition = "${encryption.column.definition}")
        @ColumnTransformer(
                  read ="${User.email.read}", 
                  write ="${User.email.write}")
        private String mailAddress;

        @Column(name = "password_expiration_date", nullable = false)
        private Date passwordExpirationDate;

        @OneToMany(targetEntity = OldPassword.class, fetch = FetchType.LAZY, cascade = { CascadeType.ALL }, orphanRemoval = true)
        @JoinColumn(name = "username", nullable = true)
        @OrderBy("creationDate desc")
        private List<OldPassword> oldPasswords;

        /**
         * Use this field to enable or disable an account manually
         */
        @Column(name = "enabled", columnDefinition = "bit default 0", nullable = false)
        private boolean enabled;

        @Transient
        private Collection<? extends GrantedAuthority> authorities;

        @OneToOne(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
        @JoinColumn(name = "profil_id", referencedColumnName = "id")
        private Profil profil;

        @ElementCollection(fetch = FetchType.EAGER)
        @CollectionTable(name = "user_places", joinColumns = @JoinColumn(name = "username"))
        private List<String> userPlaces;
    }