如何使用JPA注释将搜索对象映射到包含更多字段的类

时间:2010-05-28 15:47:52

标签: java spring jpa mapping

我是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。

感谢帮助! 谢谢!

2 个答案:

答案 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 {}

应该工作得很好。