我有一个名为test的表,它有像id,name,address这样的列。我为所有三列创建了POJO类(User
),并且已经使用hbm配置进行了映射。
我的问题是,如何在会话中保存User对象时阻止一列(session.save(User)
)。
假设我不想保存我的地址字段。我该怎么防止。 HIbernate配置中是否有任何属性或者需要在POJO中添加任何修饰符?
答案 0 :(得分:0)
为了避免实体中的字段被保留在DB中,可以使用以下两种机制之一:
@Transient - 将字段标记为不可持久的JPA注释
java中的transient关键字。注意 - 使用此关键字,将阻止该字段与java中的任何序列化机制一起使用。因此,如果必须对字段进行序列化,则最好只使用@Transient注释。
答案 1 :(得分:0)
If you're using annotations config you could could do as follows,
import javax.persistence.Transient;
....
Class User{
@Transient
private String address;
....
If you're using xml configuration just avoid creating a mapping to address propery in the hibernate.cfg.xml
file. Unmapped properties are not saved by hibernate.
Hope this helps.
答案 2 :(得分:0)
将该字段设为Transient。
瞬态 - 如果一个对象刚刚使用new运算符进行实例化,并且它与Hibernate会话无关,则该对象是瞬态的。它在数据库中没有持久表示,并且没有分配标识符值。如果应用程序不再持有引用,则垃圾收集器将销毁瞬态实例。使用Hibernate Session使对象持久化(让Hibernate处理需要为此转换执行的SQL语句)。
https://docs.jboss.org/hibernate/orm/3.3/reference/en/html/objectstate.html