我使用的代码类似于:How to map one class with multiple tables in hibernate/javax.perressioning?
我试图编写一个示例登录程序,基于上面的示例,我将我的用户类映射到我存储密码字段的辅助表。现在当我取回用户实体。我还获得了辅助表字段,因此在用户对象中也可以使用密码。
有没有可能,在注册的时候我想用二次表存储的方法,但是当我回读的时候。它不应该与用户一起返回密码?
我怎样才能做到这一点呢?我正在寻找一些JPA方式,比如@transient忽略特定列。
我不赞成这样的实施。
最佳实践是永远不要存储明文密码,而是存储摘要:
@Entity
public class Account
{
@Column
private String username;
@Column(length = 32)
private String password;
public String getUsername()
{
return username;
}
public void setUsername(String username)
{
this.username = username;
}
public String getPassword()
{
return password;
}
public void setPassword(String password)
{
this.password = DigestUtils.md5Hex(password);
}
}
这是一个不常见的需求,JPA模式将竭尽全力与您对抗:)
但是...某种方式仍然是可能的:
>
使用实体侦听器
:
@Entity
public class Account
{
@Column
private String username;
@Column
private String password;
@PostLoad
public void postLoad()
{
password = null;
}
}
小心:在事务内部加载时,空密码最终可能会在提交时被刷新。
删除密码的getter:
如果只将批注放在字段上,则可以删除getPassword()
方法。即使在加载时填充字段,外部Java代码也无法访问该字段。
使用@transient
组合:
@Entity
public class Account
{
@Column
private String username;
@Column
private String password;
@Transient
private String password2;
public String getPassword()
{
return password2;
}
public void setPassword(String password)
{
this.password = password;
this.password2 = password;
}
}
我在JPA实体类中有问题。这个实体工作正常,但今天我添加了另一个字段(一个简单的字符串,varchar(255)在数据库中不为NULL)。当我尝试持久化一个新实体时,我得到 嗯,这是真的。该列没有默认值。但在我的代码中,我为它设置了值。查看生成的insert语句时,该字段不存在。 变量的名称与列名匹配,因此没有可能导致错误的注释。它的处理方式与其他工作正常的字段/列一样。 提前感谢您的帮助! 编辑
快速总结我想要实现的目标。请给出实施或设计建议:) 我有两个表:用户,图像。在UserDO中,我希望保留一组所有用户的图像,以及单个图像,即用户的肖像(在我的示例中,该组将包括肖像): 在ImageDO中,我有一个userid作为外键来记录哪个用户上传了图像。但是它没有布尔值,因为认为一个用户可能会上传许多图像,但只有一个是肖像。 有什么方法可以实现这一点吗?或者我需要维护另一个表(例如,Port
是否有可能不在HiberNate中的实体层次结构中间为类创建表? 我想指出某些实体是某种类型的子集,以便返回所有这些实体的集合,但我不会在此中间类型中放置任何额外的属性。因此,保留带有id字段的额外表只是为了连接表,这听起来并不好。 更好的解决方案是实现一些公共接口< code>CommonInterface,但是这样我就失去了返回< code>List的可能性
我有一个实体,它有一个Map ElementCollection字段。我知道使用Jpa,您可以在类级别上使用@Index注释为常规字段定义索引。问题是我的地图元素集合字段创建了一个不是由@Entity注释类创建的连接表。所以我不能使用@Index注释。有没有Jpa/Hibernate方法来定义这个连接表中字段的索引,或者我必须手动定义它们?这是地图字段。 谢谢
问题内容: 如何保存hibernate实体并忽略(不正确)瞬态模式。 例如: 我想保存它: 弹簧产生错误: 问题答案: 参见http://docs.jboss.org/hibernate/validator/4.2/reference/en- US/html_single/#validator-checkconstraints- orm 。默认情况下,Hibernate(ORM)检查默认验证组的每
我在JPA实体映射方面有问题。我有一些课: A级 类别b Classc *如何解决这个问题?*我还能使用类继承吗?还是另一个解决这个的方法? 谢了。