2010-05-28 72 views
1

我是JPA的新手。如何使用JPA注释将搜索对象映射到具有更多字段的类

我需要将搜索对象映射到表。 搜索对象只有和id,名称。大对象有更多的文件编号,名称,地址等等。

我将此作为大对象使用 view plaincopy to 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

就这样?它应该工作。你尝试过,并得到一个错误?告诉我们错误是什么可能会有所帮助。如果可能的话,使局部视图不可变也是明智的。如果你解释为什么你想这样做,可能会有其他选择:)

@Entity 
@org.hibernate.annotations.Entity(mutable=false) 
@Table(name="users") 
public class UserSearch implements Serializable {} 

应该工作得很好。

1

我需要使用哪些注释将搜索对象映射到表用户?

你需要的,如果你想将它映射到不默认为实体名称的表使用@Table注释:

@Entity 
@Table(name = "Users") 
public class UserSearch { 
    @Id @GeneratedValue(strategy = GenerationType.AUTO) 
    private long id; 

    private String name; 

} 

但是,如果这个类是用于搜索结果,如果你不打算坚持实例,你并不需要使它成为一个实体。假设你提供适当的构造函数:

public class UserSearch { 
    private long id; 
    private String name; 

    public UserSearch(long id, String name) { 
     this.id = id; 
     this.name = name; 
    } 
} 

你可以结合使用这个类与选择新建,就像这样:

SELECT NEW com.acme.UserSearch(u.id, u.name) FROM User u 
相关问题