@ManyToOne 
@JoinColumn(name = "tid")
这个配置生效了吗?
 
把代码帖上来看下

解决方案 »

  1.   

    s表:
    package model;import java.io.Serializable;import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;/**
     *创建日期:2008-10-22
     */
    @Entity
    @Table(name = "s")
    public class s implements Serializable{
    private String sid;
    private String sname;
    private String stel;
    private String ssex;
    private t t;
    @Id
    @Column(name = "sid", nullable = false)
    public String getSid() {
    return sid;
    }
    public void setSid(String sid) {
    this.sid = sid;
    }
    @Column(name = "sname")
    public String getSname() {
    return sname;
    }
    public void setSname(String sname) {
    this.sname = sname;
    }

    @Column(name = "ssex")
    public String getSsex() {
    return ssex;
    }
    public void setSsex(String ssex) {
    this.ssex = ssex;
    }
    @Column(name = "stel")
    public String getStel() {
    return stel;
    }
    public void setStel(String stel) {
    this.stel = stel;
    }
    @ManyToOne
    @JoinColumn(name = "tid")
    public t getT() {
    return t;
    }
    public void setT(t t) {
    this.t = t;
    } }t表:
    package model;import java.io.Serializable;
    import java.util.List;import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;import org.hibernate.annotations.LazyCollection;
    import org.hibernate.annotations.LazyCollectionOption;/**
     *创建日期:2008-10-22
     */
    @Entity
    @Table(name = "t")
    public class t implements Serializable{
    private String tid;
    private String tname;
    private String tage;
    private String tsex;
    private List<s> sl;
    @Id
    @Column(name = "tid", nullable = false)
    public String getTid() {
    return tid;
    }
    public void setTid(String tid) {
    this.tid = tid;
    }
    @Column(name = "tname")
    public String getTname() {
    return tname;
    }
    public void setTname(String tname) {
    this.tname = tname;
    }
    @Column(name = "tage")
    public String getTage() {
    return tage;
    }
    public void setTage(String tage) {
    this.tage = tage;
    }
    @Column(name = "tsex")
    public String getTsex() {
    return tsex;
    }
    public void setTsex(String tsex) {
    this.tsex = tsex;
    }
    @OneToMany(mappedBy="t",cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=s.class)
    public List<s> getSl() {
    return sl;
    }
    public void setSl(List<s> sl) {
    this.sl = sl;
    }
    }
    单元测试:
    package dao;import static org.junit.Assert.*;import java.util.ArrayList;
    import java.util.List;import model.s;
    import model.t;import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;/**
     *创建日期:2008-9-12
     */public class testhibernate {
    private static sDAO sDAO;
    private static tDAO tDAO; @Before
    public void setUp() throws Exception {
    String config="classpath*:applicationContext.xml";
    ApplicationContext context=new ClassPathXmlApplicationContext(config);
    sDAO=(sDAO)context.getBean("sDAO");
    tDAO=(tDAO)context.getBean("tDAO");
    assertNotNull(sDAO);
    assertNotNull(tDAO);
    };

    @Test
    public void testCRUD(){
    t ts=new t();
    ts.setTid("139");
    ts.setTname("sss");
    ts.setTsex("xxx");

    List<s> ss=new ArrayList<s>();

    for(int i=0;i<3;i++){
    s sx=new s();
    sx.setSid("@"+i);
    sx.setSname("xds"+i);
    ss.add(sx);
    }

    ts.setSl(ss);

    tDAO.add(ts);
    assertNotNull(tDAO.get("139").getTname());
    } }
      

  2.   

    s表:
    package model;import java.io.Serializable;import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.ManyToOne;
    import javax.persistence.Table;/**
     *创建日期:2008-10-22
     */
    @Entity
    @Table(name = "s")
    public class s implements Serializable{
    private String sid;
    private String sname;
    private String stel;
    private String ssex;
    private t t;
    @Id
    @Column(name = "sid", nullable = false)
    public String getSid() {
    return sid;
    }
    public void setSid(String sid) {
    this.sid = sid;
    }
    @Column(name = "sname")
    public String getSname() {
    return sname;
    }
    public void setSname(String sname) {
    this.sname = sname;
    }

    @Column(name = "ssex")
    public String getSsex() {
    return ssex;
    }
    public void setSsex(String ssex) {
    this.ssex = ssex;
    }
    @Column(name = "stel")
    public String getStel() {
    return stel;
    }
    public void setStel(String stel) {
    this.stel = stel;
    }
    @ManyToOne
    @JoinColumn(name = "tid")
    public t getT() {
    return t;
    }
    public void setT(t t) {
    this.t = t;
    } }t表:
    package model;import java.io.Serializable;
    import java.util.List;import javax.persistence.CascadeType;
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.FetchType;
    import javax.persistence.Id;
    import javax.persistence.JoinColumn;
    import javax.persistence.OneToMany;
    import javax.persistence.Table;import org.hibernate.annotations.LazyCollection;
    import org.hibernate.annotations.LazyCollectionOption;/**
     *创建日期:2008-10-22
     */
    @Entity
    @Table(name = "t")
    public class t implements Serializable{
    private String tid;
    private String tname;
    private String tage;
    private String tsex;
    private List<s> sl;
    @Id
    @Column(name = "tid", nullable = false)
    public String getTid() {
    return tid;
    }
    public void setTid(String tid) {
    this.tid = tid;
    }
    @Column(name = "tname")
    public String getTname() {
    return tname;
    }
    public void setTname(String tname) {
    this.tname = tname;
    }
    @Column(name = "tage")
    public String getTage() {
    return tage;
    }
    public void setTage(String tage) {
    this.tage = tage;
    }
    @Column(name = "tsex")
    public String getTsex() {
    return tsex;
    }
    public void setTsex(String tsex) {
    this.tsex = tsex;
    }
    @OneToMany(mappedBy="t",cascade=CascadeType.ALL,fetch=FetchType.EAGER,targetEntity=s.class)
    public List<s> getSl() {
    return sl;
    }
    public void setSl(List<s> sl) {
    this.sl = sl;
    }
    }
    单元测试:
    package dao;import static org.junit.Assert.*;import java.util.ArrayList;
    import java.util.List;import model.s;
    import model.t;import org.junit.Before;
    import org.junit.Test;
    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;/**
     *创建日期:2008-9-12
     */public class testhibernate {
    private static sDAO sDAO;
    private static tDAO tDAO; @Before
    public void setUp() throws Exception {
    String config="classpath*:applicationContext.xml";
    ApplicationContext context=new ClassPathXmlApplicationContext(config);
    sDAO=(sDAO)context.getBean("sDAO");
    tDAO=(tDAO)context.getBean("tDAO");
    assertNotNull(sDAO);
    assertNotNull(tDAO);
    };

    @Test
    public void testCRUD(){
    t ts=new t();
    ts.setTid("139");
    ts.setTname("sss");
    ts.setTsex("xxx");

    List<s> ss=new ArrayList<s>();

    for(int i=0;i<3;i++){
    s sx=new s();
    sx.setSid("@"+i);
    sx.setSname("xds"+i);
    ss.add(sx);
    }

    ts.setSl(ss);

    tDAO.add(ts);
    assertNotNull(tDAO.get("139").getTname());
    } }
      

  3.   

    你写的也太复杂了,bean属性和表里的字段一致就可以了,可以节省很多代码
      

  4.   

    我是这样做的。我的数据库是MySql5.0版本。在子表的时候。主表的数据重复。主表3条数据。子表6条数据。在显示的时候。主表的数据就重复显示了3次。