사용자 지정 쿼리를 만드는 데 문제가 있습니다.CollectionOfElements에 대한 사용자 지정 쿼리를 만드는 방법
@Entity
public class ApplicationProcess {
@CollectionOfElements
private Set<Template> defaultTemplates;
//more fields
}
그리고 Template.java
@Embeddable
@EqualsAndHashCode(exclude={"used"})
public class Template implements Comparable<Template> {
@Setter private ApplicationProcess applicationProcess;
@Setter private Boolean used = Boolean.valueOf(false);
public Template() {
}
@Parent
public ApplicationProcess getApplicationProcess() {
return applicationProcess;
}
@Column(nullable = false)
@NotNull
public String getName() {
return name;
}
@Column(nullable = true)
public Boolean isUsed() {
return used;
}
public int compareTo(Template o) {
return getName().compareTo(o.getName());
}
}
나는 UPDATE 문을 만들려면 :
이 엔티티는 것입니다. 나는 시도했다이 두 :
int v = entityManager.createQuery("update ApplicationProcess_defaultTemplates t set t.used = true " + "WHERE t.applicationProcess.id=:apId").setParameter("apId", ap.getId())
.executeUpdate();
ApplicationProcess_defaultTemplates is not mapped [update ApplicationProcess_defaultTemplates t set t.used = true WHERE t.applicationProcess.id=:apId]
그리고이 같은 오류로
int v = entityManager.createQuery("update Template t set t.used = true " + "WHERE t.applicationProcess.id=:apId").setParameter("apId", ap.getId())
.executeUpdate();
을 시도 :
Template is not mapped [update Template t set t.used = true WHERE t.applicationProcess.id=:apId]
어떤 아이디어? 포함 된 개체가없는 개체가, 그들은 절에서 나타나지 않을 수 있습니다
UPDATE
어떻게 당신이 원하는 것은 HQL에 수 없습니다 네이티브 쿼리
int v = entityManager.createNativeQuery("update ApplicationProcess_defaultTemplates t set t.used=true where t.ApplicationProcess_id=:apId").setParameter("apId", ap.getId()).executeUpdate();