Java 如何避免Hibernate中实体属性的序列化

Java 如何避免Hibernate中实体属性的序列化,java,hibernate,entity,smartgwt,Java,Hibernate,Entity,Smartgwt,我在一个使用Hibernate的smartgwt项目中工作 我有一个用户实体和他的数据源,数据源配置为了解该实体。因此,每当我使用数据源在客户机中加载用户时,数据源都会使用Hibernate来序列化他创建的用户实体。 我的问题是,我在客户端中获得的记录具有密码属性。。。当然,密码永远不应该发送到客户端 我正在考虑两种解决方案,但直到现在我还不能成功地解决我的问题 1-我想可以将Hibernate实体配置为不序列化password属性,但我没有找到如何序列化password属性的方法 2-我还认为

我在一个使用Hibernate的smartgwt项目中工作

我有一个用户实体和他的数据源,数据源配置为了解该实体。因此,每当我使用数据源在客户机中加载用户时,数据源都会使用Hibernate来序列化他创建的用户实体。 我的问题是,我在客户端中获得的记录具有密码属性。。。当然,密码永远不应该发送到客户端

我正在考虑两种解决方案,但直到现在我还不能成功地解决我的问题

1-我想可以将Hibernate实体配置为不序列化password属性,但我没有找到如何序列化password属性的方法


2-我还认为必须能够将数据源配置为忽略该字段,但不知道如何忽略该字段。

有几种方法可以做到这一点:

@Transient
private String password;
用注释或标记字段:

private transient String password;
这些将不允许hibernate持久化或序列化对象


问题是,在读取时,您可能需要持久化密码,但不需要序列化密码。在这种情况下,我将为没有密码的用户创建一个新的POJO实体,并将其他值复制到该实体中,或者只是编写JPQL查询以获取必要的字段并排除密码。

我建议在使用smartGWT时使用。您不应该将实体发送到客户端。您应该使用DTO(数据传输对象)。仅保留用户数据中要发送到客户端的字段。在GWT Servlet中,从数据库加载实体,然后转换为相应的DTO,然后发送到客户机

嗨!正如你所说,暂时的东西不会帮助我,因为我需要在服务器中的属性,但你让我找到了解决方案。我创建了您所说的实体,只使用了我希望在客户端中使用的属性!