최근 프로젝트 생성을위한 플레이 프레임 워크와 함께 작업했습니다.이 포럼에서 내 친구들을 도와 주셔서 감사합니다. 이제는 문제가 다시 생겨났습니다. 고유 ID (증분/기본 ID가 아님)가있는 모델 클래스가 있으므로 Model 클래스에서 Model보다 GenericModel을 확장 할 수 있습니다. EmbeddedId 필드에 대해 GenericMOdel의 find() 또는 findById() 메소드를 사용하는 방법을 혼동합니다.Play 프레임 워크에서 embeddedId에 대한 find() 또는 findById() 메소드를 구현하는 방법
모델 클래스 1 :
@Entity
@Table(name="DATKAPJMLPST")
public class Datkapjmlpst extends GenericModel {
//private static final long serialVersionUID = 1L;
@EmbeddedId
public DatkapjmlpstPK id;
@Column(name="BIAYAKAP")
public BigDecimal biayakap;
@Column(name="BPJ")
public BigDecimal bpj;
@Temporal(TemporalType.DATE)
@Column(name="DtProses")
public Date dtProses;
public String flag;
@Column(name="JmlPstKom")
public BigDecimal jmlPstKom;
@Column(name="JmlPstSos")
public BigDecimal jmlPstSos;
@Column(name="JmlPstTotal")
public BigDecimal jmlPstTotal;
@Column(name="KdDati2")
public String kdDati2;
//@Column(name="KdKC")
@ManyToOne
@JoinColumn(name="KDKC")
public Refkc refKC;
@Column(name="NOREG")
public String noreg;
public Datkapjmlpst() {
}
}
모델 클래스 2 :
@Embeddable
public class DatkapjmlpstPK extends GenericModel {
//default serial version id, required for serializable classes.
//private static final long serialVersionUID = 1L;
@Temporal(TemporalType.DATE)
@Column(name="Bln")
public Date bln;
//@Column(name="KdPPK")
@ManyToOne
@JoinColumn(name="KdPPK")
public Refppk refPPK;
@Column(name="KdBU")
public String kdBU;
public DatkapjmlpstPK() {
}
}
컨트롤러의 방법
,691,363 이 내 조각 코드입니다 (210 개)public static void show(Date bln, String kdppk, String kdbu) {
JPAQuery datkapjmlpst = Datkapjmlpst.find("SELECT d FROM Datkapjmlpst d " +
"WHERE d.id.bln=? AND d.id.refPPK.kdppk=? AND d.id.kdBU=?", bln, kdppk, kdbu);
render(datkapjmlpst, bln, kdppk, kdbu);
}
조회수 :
#{form @edit(datkapjmlpst.id.bln, datkapjmlpst.id.refPPK.kdppk, datkapjmlpst.id.kdBU)}
<p>
<strong>Tanggal:</strong> ${datkapjmlpst.bln?.format('dd-MM-yyyy')}
</p>
<p>
<strong>Kantor Cabang:</strong> ${datkapjmlpst.refKC.nmkc}
</p>
<p>
<strong>BPJ:</strong> ${datkapjmlpst.bpj}
</p>
<p>
<strong>Jml Peserta Sosial:</strong> ${datkapjmlpst.jmlPstSos}
</p>
<p>
<strong>Status:</strong> ${datkapjmlpst.flag}
</p>
<p class="buttons">
<input type="submit" value="Edit Kapitasi"> <a href="@{index()}">Back to search</a>
</p>
#{/form}
이 코드는 다음과 같은 오류 출력을 가지고는 :
Internal Server Error (500) for request GET /kapitasi/show? kdbu=00000000&kdppk=00080001&bln=2011-04-01
Template execution error (In /app/views/Kapitasi/show.html around line 5)
실행 오류가 템플릿 /app/views/Kapitasi/show.html에서 발생했습니다. 발생한 예외는 MissingPropertyException : 아니요 그런 속성 : class for play.db.jpa.GenericModel $ JPAQuery.
play.exceptions.TemplateExecutionException: No such property: id for class: play.db.jpa.GenericModel$JPAQuery
at play.templates.BaseTemplate.throwException(BaseTemplate.java:84)
at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:252)
at play.templates.Template.render(Template.java:26)
at play.templates.GroovyTemplate.render(GroovyTemplate.java:184)
at play.mvc.results.RenderTemplate.<init>(RenderTemplate.java:24)
at play.mvc.Controller.renderTemplate(Controller.java:659)
at play.mvc.Controller.renderTemplate(Controller.java:639)
at play.mvc.Controller.render(Controller.java:694)
at controllers.Kapitasi.show(Kapitasi.java:62)
at play.mvc.ActionInvoker.invokeWithContinuation(ActionInvoker.java:543)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:499)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:475)
at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:470)
at play.mvc.ActionInvoker.invoke(ActionInvoker.java:158)
at Invocation.HTTP Request(Play!)
Caused by: groovy.lang.MissingPropertyException: No such property: id for class: play.db.jpa.GenericModel$JPAQuery
at /app/views/Kapitasi/show.html.(line:5)
at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:229)
... 13 more
감사합니다. Jonas .. – Sapardi