Hibernate,表连接问题(可能)

Hibernate,表连接问题(可能),hibernate,many-to-many,Hibernate,Many To Many,我对GW和Hibernate有问题 在我的数据库中,我有Sinav(考试)和Soru(问题)表和一个名为Sinav\u Soru(考试问题)的中间表。当我想使用Hibernate从数据库访问考试列表时,会发生错误 下面是错误详细信息 [WARN] Exception while dispatching incoming RPC call com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.co

我对GW和Hibernate有问题

在我的数据库中,我有
Sinav(考试)
Soru(问题)
表和一个名为
Sinav\u Soru(考试问题)
的中间表。当我想使用Hibernate从数据库访问考试列表时,会发生错误

下面是错误详细信息

   [WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentBag' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.: instance = [tr.edu.gsu.yds.shared.domain.Soru@307262ee]
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:619)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:539)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeClass(ServerSerializationStreamWriter.java:709)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:748)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:621)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
    at com.google.gwt.user.client.rpc.core.java.util.Collection_CustomFieldSerializerBase.serialize(Collection_CustomFieldSerializerBase.java:44)
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serialize(ArrayList_CustomFieldSerializer.java:39)
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serializeInstance(ArrayList_CustomFieldSerializer.java:51)
    at com.google.gwt.user.client.rpc.core.java.util.ArrayList_CustomFieldSerializer.serializeInstance(ArrayList_CustomFieldSerializer.java:28)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeImpl(ServerSerializationStreamWriter.java:740)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:621)
    at com.google.gwt.user.client.rpc.impl.AbstractSerializationStreamWriter.writeObject(AbstractSerializationStreamWriter.java:126)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter$ValueWriter$8.write(ServerSerializationStreamWriter.java:153)
    at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serializeValue(ServerSerializationStreamWriter.java:539)
    at com.google.gwt.user.server.rpc.RPC.encodeResponse(RPC.java:616)
    at com.google.gwt.user.server.rpc.RPC.encodeResponseForSuccess(RPC.java:474)
    at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:571)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
    at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    at org.mortbay.jetty.Server.handle(Server.java:324)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
真的,我没办法解决这个问题

以下是我的域代码:

Sinav.java(考试)

包tr.edu.gsu.yds.shared.domain;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.List;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.JoinColumn;
导入javax.persistence.JoinTable;
导入javax.persistence.ManyToMany;
导入javax.persistence.manytone;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
导入org.hibernate.annotations.Fetch;
导入org.hibernate.annotations.FetchMode;
@实体
@表(name=“sinav”)
公共类Sinav实现了可序列化
{
私有静态最终长serialVersionUID=1L;
私有整数sinavId;
私有字符串sinavAd;
私有字符串eklenmeTarihi;
私人食人魔食人魔;
private List ogrenciler=new ArrayList();
private List sorular=new ArrayList();
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“sinavId”,长度=10)
公共整数getSinavId(){
返回sinavId;
}
public void setSinavId(整数sinavId){
this.sinavId=sinavId;
}
@列(name=“sinavAd”,nullable=false)
公共字符串getSinavAd(){
返回sinavAd;
}
公共无效设置sinavAd(字符串sinavAd){
this.sinavAd=sinavAd;
}
@列(name=“eklemetarihi”,null=false)
公共字符串geteklemetarihi(){
返回Eklemetarihi;
}
公共void seteklemetarihi(字符串eklemetarihi){
this.eklemetarihi=eklemetarihi;
}
@manytone(fetch=FetchType.EAGER)
@JoinColumn(name=“ogretmenNo”)
公共Ogretmen getOgretmen(){
返回这个.ogretmen;
}
公共无效设置Ogretmen(Ogretmen Ogretmen){
this.ogretmen=ogretmen;
}
@OneToMany(fetch=FetchType.LAZY,mappedBy=“sinav”)
公共列表getOgrenciler()
{
回程收卷机;
}
公共无效设置克隆器(列表克隆器)
{
this.ogrenciler=ogrenciler;
}
@ManyToMany(fetch=FetchType.EAGER)
@Fetch(值=FetchMode.SUBSELECT)
@JoinTable(name=“sinav_soru”,
joinColumns={
@JoinColumn(name=“sinavId”,nullable=false)
},
反向连接列={
@JoinColumn(name=“soruId”,nullable=false)
}
)
公共列表getSorular(){
返疮;
}
公共无效集合规则(列表规则){
这是伤疤;
}
}
Soru.java(问题)

包tr.edu.gsu.yds.shared.domain;
导入java.io.Serializable;
导入java.util.ArrayList;
导入java.util.HashSet;
导入java.util.List;
导入java.util.Set;
导入javax.persistence.CascadeType;
导入javax.persistence.Column;
导入javax.persistence.Entity;
导入javax.persistence.FetchType;
导入javax.persistence.GeneratedValue;
导入javax.persistence.GenerationType;
导入javax.persistence.Id;
导入javax.persistence.ManyToMany;
导入javax.persistence.OneToMany;
导入javax.persistence.Table;
@实体
@表(name=“soru”)
公共类Soru实现了可序列化
{
私有静态最终长serialVersionUID=4L;
私有整数;
私有字符串soruTip;
私有字符串soruMetin;
私有字符串soruYardimci;
私有整数索鲁番;
private List cevaplar=new ArrayList();
private List sinavlar=new ArrayList();
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“soruId”)
公共整数getSoruId(){
返回soruId;
}
public void setSoruId(整数soruId){
this.soruId=soruId;
}
@列(name=“soruTip”,null=false,长度=20)
公共字符串getSoruTip(){
返回索鲁蒂普;
}
public void setSoruTip(字符串soruTip){
this.soruTip=soruTip;
}
@列(name=“soruMetin”,nullable=false,length=65535,columnDefinition=“Text”)
公共字符串getSoruMetin(){
返回索鲁梅丁;
}
公共void setSoruMetin(字符串soruMetin){
this.soruMetin=soruMetin;
}
@列(name=“soruYardimci”,null=false,长度=45)
公共字符串getSoruYardimci(){
返回soruYardimci;
}
公共无效设置ORUYARDIMCI(字符串soruYardimci){
this.soruYardimci=soruYardimci;
}
@列(name=“soruPuan”,null=false,长度=3)
公共整数getSoruPuan(){
返回索鲁番;
}
public void setSoruPuan(整数soruPuan){
this.soruPuan=soruPuan;
}
@OneToMany(mappedBy=“soru”,fetch=FetchType.EAGER,cascade=CascadeType.ALL)
公共列表getCevaplar(){
返回塞瓦普拉;
}
公共作废设置cevaplar(列表cevaplar){
this.cevaplar=cevaplar;
}
@ManyToMany(mappedBy=“sorular”,fetch=FetchType.LAZY)
公共列表getSinavlar(){
返回sinavlar;
}
公共无效设置(列表sinavlar){
this.sinavlar=sinavlar;
}
}
这是我获取考试列表的代码

package tr.edu.gsu.yds.client.controller.ogrenci;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

import tr.edu.gsu.yds.client.remote.YdsRemoteService;
import tr.edu.gsu.yds.client.remote.YdsRemoteServiceAsync;
import tr.edu.gsu.yds.client.view.ogrenci.sinavislemleri.OgrenciWritingSoruSayfasi;
import tr.edu.gsu.yds.shared.domain.Sinav;
import tr.edu.gsu.yds.shared.domain.SinavTakvim;
import tr.edu.gsu.yds.shared.domain.Soru;

public class OgrenciWritingSoruSayfasiController
{

    private YdsRemoteServiceAsync   ydsRemoteServiceAsync   = GWT.create( YdsRemoteService.class );
    private OgrenciWritingSoruSayfasi ogrenciWritingSoruSayfasi;

    public OgrenciWritingSoruSayfasiController( OgrenciWritingSoruSayfasi ogrenciWritingSoruSayfasi )
    {
        this.ogrenciWritingSoruSayfasi = ogrenciWritingSoruSayfasi;

    }

    public void send(){

        ydsRemoteServiceAsync.getSinavList( new AsyncCallback<List<Sinav>>()
        {

            @Override
            public void onSuccess( List<Sinav> result )
            {
                for ( Sinav sinav : result )
                {
                    //Just to see , returning results.
                    Window.alert( "sinav " + sinav.getSinavId() );

                }               
            }

            @Override
            public void onFailure( Throwable caught )
            {
                Window.alert( "Failure" );

            }
        } );
        ogrenciWritingSoruSayfasi.getOgrenciWritingWidget().getOkayButton().addClickHandler( new ClickHandler()
        {

            @Override
            public void onClick( ClickEvent event )
            {
                ogrenciWritingSoruSayfasi.getOgrenciWritingWidget().getSoruMetniLabel().setText( "Basıldı" );

            }
        } );


    }

}
包tr.edu.gsu.yds.client.controller.ogrenci;
导入java.util.List;
导入com.google.gwt.core.client.gwt;
导入com.google.gwt.event.dom.client.ClickEvent;
导入com.google.gwt.event.dom.client.ClickHandler;
导入com.google.gwt.user.client.Window;
导入com.google.gwt.user.client.rpc.Asy
package tr.edu.gsu.yds.shared.domain;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "soru")
public class Soru implements Serializable
{
    private static final long serialVersionUID = 4L;

    private Integer soruId;
    private String soruTip;
    private String soruMetin;
    private String soruYardimci;
    private Integer soruPuan;
    private List<Cevap> cevaplar = new ArrayList<Cevap>();
    private List<Sinav> sinavlar = new ArrayList<Sinav>();

    @Id
    @GeneratedValue( strategy=GenerationType.IDENTITY )
    @Column(name = "soruId")
    public Integer getSoruId() {
        return soruId;
    }

    public void setSoruId(Integer soruId) {
        this.soruId = soruId;
    }

    @Column( name = "soruTip", nullable = false, length=20 )
    public String getSoruTip() {
        return soruTip;
    }

    public void setSoruTip( String soruTip ) {
        this.soruTip = soruTip;
    }

    @Column( name = "soruMetin", nullable = false, length = 65535, columnDefinition="Text" )
    public String getSoruMetin() {
        return soruMetin;
    }

    public void setSoruMetin( String soruMetin ) {
        this.soruMetin = soruMetin;
    }

    @Column( name = "soruYardimci", nullable = false, length=45 )
    public String getSoruYardimci() {
        return soruYardimci;
    }

    public void setSoruYardimci( String soruYardimci ) {
        this.soruYardimci = soruYardimci;
    }

    @Column( name = "soruPuan", nullable = false, length=3 )
    public Integer getSoruPuan() {
        return soruPuan;
    }

    public void setSoruPuan( Integer soruPuan ) {
        this.soruPuan = soruPuan;
    }

    @OneToMany( mappedBy = "soru", fetch = FetchType.EAGER, cascade=CascadeType.ALL )
    public List<Cevap> getCevaplar() {
        return cevaplar;
    }

    public void setCevaplar( List<Cevap> cevaplar ) {
        this.cevaplar = cevaplar;
    }

    @ManyToMany( mappedBy = "sorular", fetch = FetchType.LAZY )
    public List<Sinav> getSinavlar() {
        return sinavlar;
    }

    public void setSinavlar(List<Sinav> sinavlar) {
        this.sinavlar = sinavlar;
    }

}
package tr.edu.gsu.yds.client.controller.ogrenci;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;

import tr.edu.gsu.yds.client.remote.YdsRemoteService;
import tr.edu.gsu.yds.client.remote.YdsRemoteServiceAsync;
import tr.edu.gsu.yds.client.view.ogrenci.sinavislemleri.OgrenciWritingSoruSayfasi;
import tr.edu.gsu.yds.shared.domain.Sinav;
import tr.edu.gsu.yds.shared.domain.SinavTakvim;
import tr.edu.gsu.yds.shared.domain.Soru;

public class OgrenciWritingSoruSayfasiController
{

    private YdsRemoteServiceAsync   ydsRemoteServiceAsync   = GWT.create( YdsRemoteService.class );
    private OgrenciWritingSoruSayfasi ogrenciWritingSoruSayfasi;

    public OgrenciWritingSoruSayfasiController( OgrenciWritingSoruSayfasi ogrenciWritingSoruSayfasi )
    {
        this.ogrenciWritingSoruSayfasi = ogrenciWritingSoruSayfasi;

    }

    public void send(){

        ydsRemoteServiceAsync.getSinavList( new AsyncCallback<List<Sinav>>()
        {

            @Override
            public void onSuccess( List<Sinav> result )
            {
                for ( Sinav sinav : result )
                {
                    //Just to see , returning results.
                    Window.alert( "sinav " + sinav.getSinavId() );

                }               
            }

            @Override
            public void onFailure( Throwable caught )
            {
                Window.alert( "Failure" );

            }
        } );
        ogrenciWritingSoruSayfasi.getOgrenciWritingWidget().getOkayButton().addClickHandler( new ClickHandler()
        {

            @Override
            public void onClick( ClickEvent event )
            {
                ogrenciWritingSoruSayfasi.getOgrenciWritingWidget().getSoruMetniLabel().setText( "Basıldı" );

            }
        } );


    }

}
  private List<Ogrenci> ogrenciler = new ArrayList<Ogrenci>();
private List<Soru> sorular = new ArrayList<Soru>();
  private Set<Ogrenci> ogrenciler = new HashSet<Ogrenci>();
private Set<Soru> sorular = new HashSet<Soru>();
private List<Ogrenci> ogrenciler = new ArrayList<Ogrenci>();
private List<Soru> sorular = new ArrayList<Soru>();
private Set<Ogrenci> ogrenciler = new HashSet<Ogrenci>();
private Set<Soru> sorular = new HashSet<Soru>();