Как сопоставить поисковый объект классу с большим количеством полей с аннотациями JPA - PullRequest
1 голос
/ 28 мая 2010

Я новичок в JPA.

Мне нужно сопоставить поисковый объект с таблицей. Объект поиска имеет только и id, name. У большого объекта больше идентификаторов, имен, адресов и других полей.

Я использую это как большой объект просмотреть обычную копию в буфер обмена?

Я использую это как большой объект

@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 ]

1 голос
/ 28 мая 2010

Какие аннотации мне нужно использовать для сопоставления объекта поиска пользователям таблицы?

Вам нужно использовать аннотацию @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
0 голосов
/ 28 мая 2010

Просто так? Он должен работать. Вы попробовали это и получили ошибку? Сказать нам, в чем ошибка, может помочь. Вероятно, также целесообразно сделать частичное представление неизменным, если это возможно. Если вы объясните, почему вы хотите это сделать, возможны альтернативы:)

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

Должно работать нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...