- Hibernate 4.1.6
- Spring 4,1
- Java 8
у меня есть два неизменные модели данных:
Родитель модель
@Entity
@Immutable
@Table(name="PARENT_TABLE")
public class Parent {
@Column(name="NAME")
private final String name;
@OneToMany(cascade=CascadeType.ALL, mappedBy="parent")
@MapKey(name="key")
Map<String, Child> children = new HashMap<>(1);
public Parent(String name) {
this.name = name;
}
public putChild(Child c) {
Child childWithRef = new Child(this, c.getKey());
children.put(c.getKey(), childWithRef);
}
}
Ребенок модель
@Entity
@Immutable
@Table(name="CHILD_TABLE")
public class Child {
@ManyToOne
@JoinColumn(name="PARENT_ID") //say Parent has a generated ID
private final Parent parent;
@Column(name="KEY")
private final String key;
public Child(Parent p, String key) {
this.parent = p;
this.key = key;
}
}
И я хочу, чтобы извлечь все дети, с их родителями, поэтому я стараюсь работает (entityManager
от Spring):
entityManager.createQuery("SELECT new Child(new Parent('sample name'), c.key) FROM Child c").getResultList()
Но я получаю исключение (проблема указана с второйnew
):
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: new near line 1, column ...
Кто-нибудь знает, как извлечь вложенные неизменные объекты?
Я знаю, что Hibernate действительно против неизменности. Поскольку я выполняю только простые задачи с базой данных, я бы хотел, тем не менее, попробовать.
необходимо указать, какие столбцы вам нужно, если вам нужны все вы положили «SELECT * FROM ребенка» – niceman
Sure [есть] (http://docs.jboss.org/hibernate/core/3.5/reference/ en/html/queryhql.html # queryhql-select) ... – Eeko
Прошу прощения, что я ошибся, nyway [this] (http://learningviacode.blogspot.com/2012/10/hql-and-new-keyword.html) предполагает, что вам нужно поставить полное имя – niceman