我有两个表:KT,KTTypeKT表有一字段是:KTTypeNo(也就是表KTType的主键)利用myecilpse映射的时候,发现字段变成了:private KTType ktType;//本来应该是KTTypeNo的相应的映射文件中对应的内容如下:
<many-to-one name="ktType" class="cn.nit.hibernateORM.KTType" fetch="select">
            <column name="KTTypeNo" not-null="true" />
</many-to-one>
我当时看到这个,觉得没什么,可是到后来发现要插入数据,因为我客户端有选择KTType的KTTypeName(是它的一个字段),然后再插入到数据库中的表KT中,可是发现并没有提供set,get方法,根本插入不了?这下怎么办?我应该怎么将用户选择的KTType中的KTTypeNo插入到KT中?

解决方案 »

  1.   

    你有技术问题可以到这个QQ群38615496里看看。里面有很多高手。很热心的。不过好像只加搞java的
      

  2.   

    是发现并没有提供set,get方法,根本插入不了? 
            这个你生成一个对应的方法不就行了么    这个只要对应关系没错是没的问题的
      

  3.   

    你理解错了我的意思。我的意思是在KT表中根本就没有setKTTypeNo(),和getKTTypeNo(),只有setKttype(),getKttype();但是我需要插入KTTypeNo,而不是插入KTType.
      

  4.   

    我也知道可以手动修改。但是既然myeclipse会生成这样,总有一定的道理,应该可以实现的吧,而不是要我去修改属性private KTType ktType;难道要把它改成private Integer ktTypeNo;相信myeclipse生成private KTType ktType应该有它的道理。而不是让我去修改成private Integer ktTypeNo;
      

  5.   

    //根据ktType 的主键查找出那个ktType的持久化实例ktType,然后ktType和kt要进行如下:
    kt.setKtType(ktType);
    ktType.setKt(kt);
    //最后保存这两个实例(实例只用保存一个(kt)就够了,因为ktType已经是持久态了,当ktType发生改变时,会hibernate自动把它更新进数据库的)
      

  6.   

    在hibernate中,关联双方都是对象,而不是对象的一个属性。myeclipse生成的代码是没错的
      

  7.   

    你还是先买本hibernate的书或下载电子书,系统地学习一下这个框架吧。不然别人讲给你的是听不懂的
      

  8.   

    你这个事由表生成的映射文件吧,别总相信工具,eclipse出错时可以原谅的,毕竟是免费的。你去手动修改了pojo类就行了,达到要求就行了,至于你说的有道理的话,我建议你去问问开发集成环境的高手们去、他们会说的很好的。
      

  9.   

    自动生成的是对的
    把整张表放到了KT里面
    你要获得No通过ktType.KTTypeNo出来
      

  10.   

    我可以理解为什么生成private KTType ktType;因为我让字段KTTypeNo和表KTType相关联了,所以会生成 private KTType ktType;而不是private Integer KTTypeNo,但是问题卡在如何将值放到表中的KKTypeNo中?是不是这样:KT kt = new KT();
    KTType ktType = new KTType();
    kt.setKtType(ktType);
    ktType.setKTTypeNo(new Integer("1"));//假设是值"1"
    这样是不是会将"1"插入到表KT中?
      

  11.   

    import java.util.Scanner;public class TsetTest { public static int wordnum;
    public static int charnum = 0;
    public static String newsentence = ""; public static void deleteso(String sentence) {
    String[] words = sentence.split(" ");
    wordnum = words.length;
    for (int i = 0; i < words.length; i++) {
    if (words[i].length() != 1) {
    StringBuilder newword = new StringBuilder();
    for (int j = 0; j < words[i].length(); j++) {
    if (returnsm(words[i].charAt(j)) != 'a'
    && returnsm(words[i].charAt(j)) != 'e'
    && returnsm(words[i].charAt(j)) != 'i'
    && returnsm(words[i].charAt(j)) != 'o'
    && returnsm(words[i].charAt(j)) != 'u') {
    if (j > 0 && newword.length() > 0) {
    if (words[i].charAt(j) != newword.charAt(newword
    .length() - 1)
    || words[i].charAt(j) < 65
    || words[i].charAt(j) > 122) {
    newword.append(words[i].charAt(j));
    } else {
    charnum++;
    }
    } else {
    newword.append(words[i].charAt(j));
    }
    } else {
    charnum++;
    }
    }
    words[i] = newword.toString();
    }
    newsentence = newsentence + words[i] + " ";
    }
    } public static char returnsm(char c) {
    char cf = c; if (c >= 'A' && c <= 'Z') {
    cf = (char) (c - 32);
    }
    return cf;
    } public static void main(String[] args) {
    System.out.println("Please enter a Sentence:");
    String sentence = "";
    Scanner read = new Scanner(System.in);
    sentence = read.nextLine();
    deleteso(sentence);
    System.out.println("Abbreviated String: " + newsentence);
    System.out.println("Sentence Stats");
    System.out.println("Number of Words: " + wordnum);
    double a = wordnum;
    double b = charnum;
    double c = b / a;
    System.out.println("Average number of letters dropped per word: " + c);
    System.out.println("Do you want to try another? (y/n)");
    read = new Scanner(System.in);
    String yesno = "y";
    yesno = read.nextLine();
    if (yesno.equals("y") || yesno.equals("Y")) {
    charnum = 0;
    newsentence = "";
    main(args);
    } else {
    read.close();
    }
    }}
    最後一遍了!!
      

  12.   

    //你的好像写反了在line 3 and line 4 应该是这样KT kt = new KT();
    KTType ktType = new KTType();
    ktType.setKTTypeNo(new Integer("1"));//假设值
    kt.setKtType(ktType);
      

  13.   

    我现在自己添加了属性
    private Integer ktTypeNo;利用“唯一外键关联”实现,是不是可以这样?