org.hibernate.id.IdentifierGenerationException: null id generated for:class com.liujinlong.entity.Address1测试代码如下 请指教
表中已经两端设置了主键 用户端主键自动增长1 public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction(); try {
Person1 p = new Person1();
Address1 ad = new Address1();
ad.setAtext("北京");
p.setPname("张三");
ad.setPerson1(p);
p.setAddress1(ad);
session.save(p);
tx.commit();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
} }--------------------------------------
用户类
public class Person1 implements java.io.Serializable { // Fields private Integer pid; private String pname; private Address1 address1;
............地址类
public class Address1 implements java.io.Serializable { private Integer aid; private String atext; private Person1 person1; ...........
-----------------------------------------------用户端配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.liujinlong.entity.Person1" table="Person1"
schema="dbo" catalog="accpOnetoOne">
<id name="pid" type="java.lang.Integer">
<column name="pid" />
<generator class="native" />
</id>
<property name="pname" type="java.lang.String">
<column name="pname" length="50" not-null="true" />
</property>
<one-to-one name="address1"
class="com.liujinlong.entity.Address1" cascade="all" constrained="true"
>
</one-to-one>
</class>
</hibernate-mapping>-----------------------------------
地址端配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.liujinlong.entity.Address1" table="Address1" schema="dbo" catalog="accpOnetoOne">
<id name="aid" type="java.lang.Integer">
<column name="aid" />
<generator class="foreign" >
<param name="property">person1</param>
</generator>
</id> <property name="atext" type="java.lang.String">
<column name="atext" length="50" />
</property>
<one-to-one name="person1" class="com.liujinlong.entity.Person1"></one-to-one> </class>
</hibernate-mapping>
------------------------
org.hibernate.id.IdentifierGenerationException: null id generated for:class com.liujinlong.entity.Address1测试代码如下 请指教
表中已经两端设置了主键 用户端主键自动增长1 public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction(); try {
Person1 p = new Person1();
Address1 ad = new Address1();
ad.setAtext("北京");
p.setPname("张三");
ad.setPerson1(p);
p.setAddress1(ad);
session.save(p);
tx.commit();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
} }
表中已经两端设置了主键 用户端主键自动增长1 public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction(); try {
Person1 p = new Person1();
Address1 ad = new Address1();
ad.setAtext("北京");
p.setPname("张三");
ad.setPerson1(p);
p.setAddress1(ad);
session.save(p);
tx.commit();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
} }--------------------------------------
用户类
public class Person1 implements java.io.Serializable { // Fields private Integer pid; private String pname; private Address1 address1;
............地址类
public class Address1 implements java.io.Serializable { private Integer aid; private String atext; private Person1 person1; ...........
-----------------------------------------------用户端配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.liujinlong.entity.Person1" table="Person1"
schema="dbo" catalog="accpOnetoOne">
<id name="pid" type="java.lang.Integer">
<column name="pid" />
<generator class="native" />
</id>
<property name="pname" type="java.lang.String">
<column name="pname" length="50" not-null="true" />
</property>
<one-to-one name="address1"
class="com.liujinlong.entity.Address1" cascade="all" constrained="true"
>
</one-to-one>
</class>
</hibernate-mapping>-----------------------------------
地址端配置
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.liujinlong.entity.Address1" table="Address1" schema="dbo" catalog="accpOnetoOne">
<id name="aid" type="java.lang.Integer">
<column name="aid" />
<generator class="foreign" >
<param name="property">person1</param>
</generator>
</id> <property name="atext" type="java.lang.String">
<column name="atext" length="50" />
</property>
<one-to-one name="person1" class="com.liujinlong.entity.Person1"></one-to-one> </class>
</hibernate-mapping>
------------------------
org.hibernate.id.IdentifierGenerationException: null id generated for:class com.liujinlong.entity.Address1测试代码如下 请指教
表中已经两端设置了主键 用户端主键自动增长1 public static void main(String[] args) {
Session session = HibernateSessionFactory.getSession();
Transaction tx = session.beginTransaction(); try {
Person1 p = new Person1();
Address1 ad = new Address1();
ad.setAtext("北京");
p.setPname("张三");
ad.setPerson1(p);
p.setAddress1(ad);
session.save(p);
tx.commit();
System.out.println("ok");
} catch (Exception e) {
e.printStackTrace();
} finally {
session.close();
} }
解决方案 »
- Could not resolve placeholder 'hibernate.driverClassName'
- struts2 urlrewrite 配置无效求问...
- 急!一个Structs2工程发布时遇到的麻烦,求高手帮忙!谢谢!
- 菜鸟请求帮忙!!!!!!!!!!!!!!!
- 小弟跪求EJB3.0等框架在Eclipse中的开发环境!急急急!
- 软件开发软件工程QQ抱抱群(11个联盟群)-强大技术造就未来
- struts问题:导数据!详细情况请进!
- 请用过FreeMarker的朋友进来帮个忙
- struts中的中文处理问题
- 请教各位一个问题!!
- struts2 的文本框为什么有的可以在表单提交完后任然留有原来的值,而有的却像是刷新过一样文本框里的内容自动消除?
- struts2的include标签的问题
<column name="aid" />
<generator class="foreign" >
<param name="property">person1 </param>
</generator>
</id>
会不会是Address1 的主健生成策略有问题..
1.一对一配置方式有两种,你采用的是共享主键的方式。
不知道想用哪个类为主控方,你写的Address类为主类,但配置恰好写反了。
正确的方式(以Person为主类,Address为副类,就是地址类的id与Person的id相同)
Person:
<id ..>
<genernator class="increment"/>
</id>
...
<one-to-one name="address" class="包名.Address"/>
Address
<id ..>
<generator class="foreign">
<param name="property">person</param>
</...>
<one-to-one name="person" constrined="true"/>