2011-08-12 4 views
1

이제 데이터베이스에 테이블을 매핑하는 방법을 알아 보겠습니다.테이블이 매핑되지 않았습니까?

@Entity() 
@Table(name = "test") 
public class Test implements Serializable { 
    /** Constant - serial version UID. */ 
    public final static long serialVersionUID = 1L; 

    /** Member variable - represents the "name" field. */ 
    public String name; 
} 

하지만 쿼리 할 때 어떤 이유 때문에

delete from test; 

이 오류가 발생합니다.

15:55:54,140 ERROR [JsonFilter] javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: spa_splash_page_ad is not mapped [delete from spa_splash_page_ad] 
javax.servlet.ServletException: javax.ejb.EJBException: java.lang.IllegalArgumentException: org.hibernate.hql.ast.QuerySyntaxException: spa_splash_page_ad is not mapped [delete from spa_splash_page_ad] 
    at com.pinksheets.common.web.servlet.DeleteSplashPageServlet.fetch(DeleteSplashPageServlet.java:30) 
    at com.pinksheets.common.web.servlet.DeleteSplashPageServlet.fetch(DeleteSplashPageServlet.java:17) 

왜 그런 짓을 한거야?

+0

testValue 클래스의 코드는 무엇입니까? –

+0

테스트 값은 기본 키의 변수 일뿐입니다. – iCodeLikeImDrunk

+0

예, '@ IdClass'를 사용하는 경우 기본 클래스에서 일치하는 멤버가 있어야합니다. http://download.oracle.com/javaee/5/api/javax/persistence/IdClass.html을 참조하십시오. –

답변

1

delete from table test은 내가 아는 QL에서 유효한 검색어가 아닙니다.

@IdClass으로 매핑 된 클래스는 복합 ID이므로 직접 삭제하지 않아도됩니다. ID가있는 엔티티를 삭제합니다. 또한 @IdClass이기 때문에 명시 적으로 @Table 매핑을 제공 할 때 무엇을 기대할 지 확신 할 수 없습니다. @IdClass은 기본 키 값이며 항상 다른 클래스의 ID로 사용되기로되어 있습니다. 자체 테이블이 없습니다. mapping composite ids에 대한 최대 절전 모드 주석 참조를 참조하고 use of @IdClass을 수정하십시오.

+0

나중에 테이블을 검토 한 결과, 그것이 복합 ID를 가지고 있다고 생각한 것 같습니다 .. 감사합니다! 여전히 매핑되지 않은 오류가 발생했습니다. 내 스승을 추측하는 것은 아마도 다른 방식으로 수행 할 것입니다. – iCodeLikeImDrunk

+0

다음 질문은 단순히'session.delete (someObject)'를 호출하는 대신 삭제 쿼리를 작성하려고하는 이유입니다. . –

+0

나에게 묻지 마라. 나의 멘토는 그 방법을 원한다. =/ – iCodeLikeImDrunk

2
  1. 시도 :

    delete from com.mycompany.database.Test
    에 대한 fully qualified names 읽기 (그 것이다 전체 패키지 이름/경로 + 클래스 명)

  2. 왜 쿼리 단어 table?

  3. 또한 자본 시작하는 문자와 엔티티의 이름을, 당신은 자바 규칙을 유지해야 @Entity()

  4. 에서 ()을 제거 :

    class Test{} 당신이 할 수있는 것보다 :

    delete from fully.qualified.name.Test

  5. 엔티티가인지 확인하십시오.그리고 다른 건 없어요.

+0

그 오류가 발생했습니다. shouldnt 테이블을 어디서나 삭제할 수 있습니다. fully.qualified.name.test이게 무슨 뜻입니까 ?? 그걸 입력 해? ()은 거기에있다. 왜냐하면 나는 그녀가 거기에 그것을 가지고 있었기 때문에 예를 들어 고위 개발자들 중 한명을 사용했기 때문에 나는 그것을 추가했다. ... ill try again .. – iCodeLikeImDrunk

+0

@Joe Chen - 나는 나의 포스트를 편집한다. – fatnjazzy

관련 문제