난 그냥 최대 절전 모드로 내 첫 단계를 수행하려고했습니다.java 하이버 네이트 manytomany 매핑 테이블에 액세스하는 방법
따라서 두 테이블 (geraet 및 stadort)을 사용하여 간단한 데이터베이스를 생성했습니다.
테이블은 many to many 매핑을 가지고 있고, hibernate는 (예상대로) 제 3 매핑 테이블을 생성한다.
(사진 그냥 기본 키를 보여줍니다)일부 값을 삽입 한 후 나는 데이터베이스를 조회하고 싶습니다. 맵핑 테이블에서 둘 이상의 항목이있는 테이블 (geraet)의 모든 항목을 가져 오려고합니다. 불행하게도 내가 최대 절전 모드에서이 작업을 수행하는 방법을 알아낼 수 없습니다
select ge.*
from geraet ge
inner join gsm g on ge.id=g.geraet_id
inner join standort s on g.standorts_id=s.id
group by ge.id
having count (g.geraet_id)>1
:
일반 SQL에서 내가 좋아하는 일을 할 것입니다.
마지막으로 매핑 테이블에 자바 클래스를 작성하려고했습니다. 불행히도 자동으로 생성 된 매핑 테이블에는 단일 기본 키 열 (기본 키는 두 열 이상의 조합)이 없기 때문에 최대 절전 모드를 사용하여이 테이블에 액세스 할 수 없었습니다.
이제 두 개의 독립적 인 일대 다 매핑에서 많은 매핑을 여러 매핑로 분할하려고합니다. 그러나 더 효율적인 방법이 있기를 바랍니다.
다음과 같은 예외가 발생package myclasses;
import javax.persistence.Entity;
import javax.persistence.Table;
@Entity
@Table (name="gsm")
public class GSM {
private int geraet_id;
private int standorts_id;
public int getGeraet_id() {
return geraet_id;
}
public void setGeraet_id(int geraet_id) {
this.geraet_id = geraet_id;
}
public int getStandorts_id() {
return standorts_id;
}
public void setStandorts_id(int standorts_id) {
this.standorts_id = standorts_id;
}
}
public class Main {
public static void main(String[] args) {
...
List<GSM>gsmlist = session.createCriteria(GSM.class).list();
for (GSM aktuell : gsmlist)
{
System.out.println(aktuell.getGeraet_id()+" "+aktuell.getStandorts_id());
}
session.getTransaction().commit();
session.close();
factory.close();
}
}
가 :
Exception in thread "main" org.hibernate.AnnotationException: No identifier specified for entity: myclasses.GSM
at org.hibernate.cfg.InheritanceState.determineDefaultAccessType(InheritanceState.java:266)
at org.hibernate.cfg.InheritanceState.getElementsToProcess(InheritanceState.java:211)
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:731)
at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.processEntityHierarchies(AnnotationMetadataSourceProcessorImpl.java:249)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess$1.processEntityHierarchies(MetadataBuildingProcess.java:222)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:265)
at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418)
at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:726)
at myclasses.Main.main(Main.java:24)