我是JPA的新手。
我需要将搜索对象映射到表格。 搜索对象只有和id,name。大对象有更多的文件ID,名称,地址等等。
我用它作为大对象 查看plaincopy到clipboardprint?
我用它作为大对象
@Entity
@Table(name="users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
private String adress;
private String keywords;
}
//this is my search object
@XXX
public class UserSearch {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
}
我需要使用哪些注释将搜索对象映射到表用户?
我正在使用spring + struts2 + hibernate + JPA。
感谢帮助! 谢谢!
答案 0 :(得分:1)
我需要使用哪些注释将搜索对象映射到表用户?
如果要将其映射到不默认为实体名称的表,则需要使用@Table
注释:
@Entity
@Table(name = "Users")
public class UserSearch {
@Id @GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String name;
}
但是,如果此类用于搜索结果,并且您不打算保留UserSearch
个实例,则实际上并不需要将其设为实体。假设您提供了适当的构造函数:
public class UserSearch {
private long id;
private String name;
public UserSearch(long id, String name) {
this.id = id;
this.name = name;
}
}
您可以将此类与SELECT NEW结合使用,如下所示:
SELECT NEW com.acme.UserSearch(u.id, u.name) FROM User u
答案 1 :(得分:0)
就是这样?它应该工作。你试过它并得到错误吗?告诉我们错误是什么可能会有所帮助。如果可能的话,使局部视图不可变也可能是明智的。如果您解释为什么要这样做,可能有其他选择:)
@Entity
@org.hibernate.annotations.Entity(mutable=false)
@Table(name="users")
public class UserSearch implements Serializable {}
应该工作得很好。