Java 如何将搜索对象映射到具有更多JPA注释字段的类

Java 如何将搜索对象映射到具有更多JPA注释字段的类,java,spring,jpa,mapping,Java,Spring,Jpa,Mapping,我是JPA的新手 我需要将搜索对象映射到表。 搜索对象只有和id、名称。大对象有更多的文件id、名称、地址等 我用这个作为大对象 是否查看从纯拷贝到剪贴板打印 我用这个作为大对象 @Entity @Table(name="users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String name; private String

我是JPA的新手

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

我用这个作为大对象 是否查看从纯拷贝到剪贴板打印

我用这个作为大对象

@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

谢谢你的帮助!
谢谢

就这样?它应该会起作用。你有没有试过,结果出错?告诉我们错误是什么可能会有所帮助。如果可能的话,使局部视图不可变可能也是明智的。如果您解释了为什么要这样做,可能还有其他选择:)


应该没问题。

就这样?它应该会起作用。你有没有试过,结果出错?告诉我们错误是什么可能会有所帮助。如果可能的话,使局部视图不可变可能也是明智的。如果您解释了为什么要这样做,可能还有其他选择:)

应该很好用

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

如果要将注释映射到不默认为实体名称的表,则需要使用
@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
我需要使用哪些注释将搜索对象映射到表用户

如果要将注释映射到不默认为实体名称的表,则需要使用
@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