У меня есть несколько объектов, которые имеют переходные свойства, которые я хотел бы заполнить из SQL-запроса. Я пробовал несколько вещей, но пока не нашел правильной комбинации.Java Hibernate заполняет переходное свойство
вот пример сущность
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
long id;
@Size(max=1000)
String image_url;
@Transient
boolean liked;
@Transient
long numLikes;
**getters and setters** for persistent properties
public boolean isLiked() {
return liked;
}
public void setLiked(boolean liked) {
this.liked = liked;
}
public long getNumLikes() {
return numLikes;
}
public void setNumLikes(long numLikes) {
this.numLikes = numLikes;
}
Я попытался с помощью @Basic и установок этой заметки это принести метод нетерпеливого
@Basic(fetch = FetchType.EAGER)
на добытчиках, но это, похоже, ничего не делать , Я видел, что он тоже ленив.
Я пропустил что-нибудь здесь, что приведет к тому, что имя столбца не будет сопоставлено с одним из этих свойств переходного процесса?
вот мой код.
SQLQuery query = getCurrentSession().createSQLQuery("" +
"SELECT * ,count(likes1.liked) as numLikes " +
"FROM aboutme " +
"left JOIN " +
"(" +
" select liked, likedObject_id " +
" from likes " +
" where liked = 1" +
") as likes1 ON aboutme.id = likes1.likedObject_id " +
"left join " +
"(" +
" select likedObject_id, liked " +
" from likes " +
" where liked = 1 and profile_id = :id" +
") as likes2 on likes2.likedObject_id = aboutme.id " +
"WHERE aboutme.profile_id = :id " +
"group by aboutme.id");
query.addEntity(AboutMe.class);
query.setParameter("id",id);
return query.list();
Я попытался с помощью
SQLQuery query = ..."Select count(value that returns properly) as {object.numLikes}..."
query.addEntity("object",Object.class),
Я получаю ошибку здесь, что говорит он не может найти имя столбца для свойства [свойств] для псевдонима [псевдоним]
Что я делаю неправильно?
Преходящие свойства, вероятно, не подходят для того, что я пытаюсь сделать. мне нужно выяснить, как сопоставить эти производные столбцы с объектом, который я могу вернуть в интерфейс. как настроить объект, который спящий режим может сопоставить эти столбцы с псевдонимом со свойствами?
Transient отмечен для полей/методов, которые никогда не должны принимать участие в сохранении базы данных. Они не настойчивы. Почему вам нужно, чтобы все эти поля были аннотированы так или иначе, в чем причина? – Vaelyr
ОК, возможно, переходные свойства - это не тот маршрут, на который мне нужно идти. У меня есть отношения друг к другу. для подобной части. возможно, я должен вернуть два объекта в списке и запустить его таким образом? есть ли способ вернуть производное свойство, которое не является частью объекта таблицы? как вы это сделали/видели это? –