2011-09-23 2 views
2

최근 프로젝트 생성을위한 플레이 프레임 워크와 함께 작업했습니다.이 포럼에서 내 친구들을 도와 주셔서 감사합니다. 이제는 문제가 다시 생겨났습니다. 고유 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 
+0

감사합니다. Jonas .. – Sapardi

답변

0

DatkapjmlpstPK 클래스가 누락되었습니다. DatkapjmlpstPK 클래스는 EmbeddedId 클래스이므로 확장 할 필요가 없습니다. GenericModel

+0

감사합니다. Isiu. 나는 당신의 제안을 시도했지만 여전히 오류가있다. 그리고 DatacapjmlpstPK 클래스의 GenericModel을 Serializable 구현으로 대체한다. 여전히 동일한 error.Exception이 발생한다. MissingPropertyException : 클래스의 id : play.db.jpa.GenericModel $ JPAQuery. – Sapardi

+0

추가 정보로서 내 플레이 프레임 워크를 코딩하기 전에 제 데이터베이스가 빌드되었습니다. 일부 비표준 테이블 디자인이 있습니다. 이 상황에 대한 어떤 제안이라도 ..? 전에 고마워. – Sapardi

관련 문제