我有一个应用程序,可以让用户有机会更新某些值。我想只将这些列的信息发送给用户并进行更新。
我想坚持从他们发送给我的内容创建的hibernate实体,但不更新用户无权访问的列。同样,如果他们请求新条目,我想使用他们发送给我的数据并将未提及的列设置为数据库默认值。
是否有简单的方法或最佳实践可供使用?
我是否应该创建第二个映射到该表但没有提到这些列的映射?
答案 0 :(得分:6)
我想我会在映射文件上标记属性update =“false”。我很想知道是否有办法按持续时间做,所以如果我写了其他应该改变这些字段的东西,它就可以做到。
答案 1 :(得分:1)
如果您不希望更新这些列,只是不要调用这些列的setter?如果未调用列的setter(或使用新值调用),则不会更新该列。
您需要首先使用hibernate获取条目,然后调用setter以获取相应的列,然后保留它。这样,您不想更改的数据就不会改变。
答案 2 :(得分:1)
在Hibernate中使用updatable = false以避免更新列。
例如:
@Column(name=CRE_TS, updatable=false)
private Date getCreTs(){
return this.creTs;
}
答案 3 :(得分:0)
我的要求是我不想更新method1()
中的列,但是应该更新method2()
中的列,因此在此处配置级别不起作用。
解决方案是制作一个Cloneable
POJO并覆盖clone()
方法。
public class User implements Cloneable {
//properties
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
从会话中获取对象
User user = <from Session suppose>.
User clone = null;
try {
clone = (User) user .clone(); // clone the real object
} catch (CloneNotSupportedException e) {
//log your Exception here
}
clone.setUserName("Avinash");
transaction.commit();
}
session.close();