Java Hibernate:在多对一类映射中设置默认值

Java Hibernate:在多对一类映射中设置默认值,java,xml,hibernate,mapping,hql,Java,Xml,Hibernate,Mapping,Hql,我正在尝试将类语言映射到类用户 多对一映射工作正常,通过应用程序的功能,我可以将默认值null设置为特定值 问题是我想将默认映射设置为idLanguage 1,但当它映射时,所有内容都设置为null 我试过: < many-to-one name="language" class="com. \etc\ .language.Language" column="language" default="1" lazy="false" />

我正在尝试将类语言映射到类用户

多对一映射工作正常,通过应用程序的功能,我可以将默认值null设置为特定值

问题是我想将默认映射设置为idLanguage 1,但当它映射时,所有内容都设置为null

我试过:

< many-to-one name="language" class="com. \etc\ .language.Language" column="language" default="1" lazy="false" />
然而,这给了我一个错误“属性默认值必须为元素类型多对一声明

怎么办


(注意:语言映射到用户类中的语言对象,而不是语言id。应用程序中的设置将语言id放在语言列中,替换空值)

我希望这些语言将成为应用程序中的种子数据。然后在用户映射中有一个单独的langId字段,并将其设置为1。加载用户bean时可以使用对象映射。因此,请按以下方式修改映射

< many-to-one name="language" class="com. \etc\ .language.Language" column="language" lazy="false" insert="false" update="false"/>

<property name="langId" column="language"/>

这样做会更有效,因为在保存用户bean之前,您不必从数据库中获取语言bean。同样,在用户加载时,这些语言也可以使用。

好的,我尝试过了,但出现了以下错误:org.hibernate.PropertyAccessException:Null值被分配给com的基元类型setter的属性。\etc\.User.Us用户类中带有private int langID=1;w/get/set的er.langID在保存用户bean之前,使用用户类中的setLangID()方法将langID的值设置为1。恐怕不起作用,它给了我线程空指针。它不起作用,所以我尝试设置一个简单的if(User.getLanguage==null){Language newlanguage();newLang.setIdLang(1);user.setLanguage(newLang)};这仍然会给出一个空指针。当然,这应该会看到空指针并转到ok,这样做:(