我有一个用户 bean:
@Entity
public class User extends Model{
@Id
public int id;
public String name;
public String username;
public String email;
public String password;
public Timestamp inscriptionDate;
public Timeline timeline;
}
我在数据库中保存了这样的游戏:
User user = Form.form(User.class).bindFromRequest().get();
user.save();
但我不想保存时间轴用户的字段。
有没有办法实现这个目标?
编辑1
我在想要的字段上试过@Transient
,但没有效果。
编辑2
这是时间轴类:
import java.util.Collection;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
public class Timeline {
public SortedSet<Event> events;
public String familyName;
public Timeline(String familyName)
{
this.events=new TreeSet<Event>(Event.getEventsComparator());
this.familyName=familyName;
}
// some other methods
}
这是User类:
@Entity
public class User extends Model{
@Id
public int id;
public String name;
public String username;
public String email;
public String password;
public Timestamp inscriptionDate;
@Transient
public Timeline timeline;
public User(){}
public User(String name, String email, String username, String password){
this.name = name;
this.email = email;
this.username = username;
this.password = password;
}
// Other methods ...
}
编辑3
我使用这种方法在db中显示我的用户:
public static Result getUsers(){
List<User> users = new Model.Finder(String.class, User.class).all();
return ok(toJson(users));
}
我认为这就是为什么我总是为null
设置timeline
字段。时间线实际上是不保存在数据库中,对吗?
答案 0 :(得分:2)
我在我的应用程序中成功使用了@Transient。
也许是一个导入问题:
import javax.persistence.Transient
不是
import java.beans.Transient
修改2
数据库中的排除字段:@Transient正常工作
在json中排除字段:它存在的解决方案很少,view是一个
答案 1 :(得分:0)
将数据直接从请求(表单)绑定到数据库实体类是一种安全漏洞。您可能希望将其绑定到POJO
类,必要时执行验证,然后自己使用请求数据填充User.class
。