该帖已经被评为精华帖
|
|
---|---|
作者 | 正文 |
发表时间:2003-12-22
hibernate入门篇之新增功能!。我们继续进行!
接上一篇文章Author.java package com.javamodel.hibernate; public class Author{ private String id ; private String alias = null; private Person person = null; /** * @return */ public String getAlias(); { return alias; } /** * @return */ public Person getPerson(); { return person; } /** * @param string */ public void setAlias(String string); { alias = string; } /** * @param person */ public void setPerson(Person person); { this.person = person; } /** * @return */ public String getId(); { return id; } /** * @param i */ public void setId(String i); { id = i; } } author.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > <hibernate-mapping> <class name="com.javamodel.hibernate.Author" table="author" > <id name="id" column="id"> <generator class="foreign"> <param name="property">person</param> </generator> </id> <property name="alias" column="alias" /> <one-to-one name="person" class="com.javamodel.hibernate.Person" cascade="all" constrained="true" /> </class> </hibernate-mapping> Example.java package com.javamodel.hibernate; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import net.sf.hibernate.HibernateException; import net.sf.hibernate.MappingException; import net.sf.hibernate.Session; import net.sf.hibernate.SessionFactory; import net.sf.hibernate.Transaction; import net.sf.hibernate.cfg.Configuration; public class Example{ private static SessionFactory _sessions = null; private static Properties pops = new Properties();; static{ try { InputStream stream = Example.class.getResourceAsStream("hibernate.properties");; try { pops.load(stream);; } catch (IOException e1); { e1.printStackTrace();; } Configuration cfg = new Configuration();; cfg.addClass(Person.class);; cfg.addClass(Author.class);; cfg.setProperties(pops);; _sessions = cfg.buildSessionFactory();; } catch (MappingException e); { e.printStackTrace();; } catch (HibernateException e); { e.printStackTrace();; } } public static void main(String[] args); throws HibernateException { Person person = new Person();; person.setName("HengfeiDo");; person.setEmail("smallduzi@sohu.com");; Author author = new Author();; author.setAlias("smallduzi");; author.setPerson(person);; Session session = _sessions.openSession();; Transaction tx = null; try{ tx = session.beginTransaction();; session.save(author);; tx.commit();; System.out.println("over");; }catch(HibernateException he);{ if(tx != null); tx.rollback();; throw he; } finally{ session.close();; } } } 如果大家有更好的实现方式可拿出来讨论一下! 我将在下一篇文章介绍one-to-many。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2003-12-26
其实我想one2one还是有不少东西可以讨论的
例如:在强制1-1对应的情况,和允许0-1对应的情况。 |
|
返回顶楼 | |
发表时间:2003-12-26
说来听听
|
|
返回顶楼 | |
发表时间:2003-12-28
net.sf.hibernate.MappingException: Repeated column in mapping for class com.one2one.Person should be mapped with insert="false" update="false": NAME
at net.sf.hibernate.persister.AbstractEntityPersister.checkColumnDuplication(AbstractEntityPersister.java:1000) at net.sf.hibernate.persister.EntityPersister.<init>(EntityPersister.java:804) at net.sf.hibernate.persister.PersisterFactory.createClassPersister(PersisterFactory.java:41) at net.sf.hibernate.impl.SessionFactoryImpl.<init>(SessionFactoryImpl.java:137) at net.sf.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:739) at com.one2one.hibernateAPIClientTest.main(hibernateAPIClientTest.java:31) |
|
返回顶楼 | |
发表时间:2003-12-29
回应 linuxaid 兄,此例子没有问题哦,我可以执行。(就好像 smallcuzi 兄说的那样,他不会误人子弟啦!)
您可以再尝试看看哦。 ................... 看了这个例子,解答了我对 one to one 的迷惑。 以前我曾经参考过一个自称是高级软体设计师的大兄,根据他的例子,虽然我可以把资料save到DataBase里头,但是我一直很怀疑,是否这样就算是one to one连接起来了。 该例子是: <id name="id" column="AddressId" type="string" unsaved-value="any" > <generator class="assigned"/> </id> 他没有 foreign key 哦!!那么person怎么和address有关系呢?? 我自问对hibernate,甚至DataBase认识不深,但是也觉得怪怪的。 再次感激 smallduzi 兄~ 可惜我没有妹妹,不然就介绍给您认识啦~~ 呵呵~ |
|
返回顶楼 | |
发表时间:2003-12-29
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"> <hibernate-mapping> <class name="com.one2one.Person" table="PERSON"> <!--琛ㄧ殑涓婚敭鐨勮 |
|
返回顶楼 | |
发表时间:2003-12-29
kitleong 写道 回应 linuxaid 兄,此例子没有问题哦,我可以执行。(就好像 smallcuzi 兄说的那样,他不会误人子弟啦!)
您可以再尝试看看哦。 ................... 看了这个例子,解答了我对 one to one 的迷惑。 以前我曾经参考过一个自称是高级软体设计师的大兄,根据他的例子,虽然我可以把资料save到DataBase里头,但是我一直很怀疑,是否这样就算是one to one连接起来了。 该例子是: <id name="id" column="AddressId" type="string" unsaved-value="any" > <generator class="assigned"/> </id> 他没有 foreign key 哦!!那么person怎么和address有关系呢?? 我自问对hibernate,甚至DataBase认识不深,但是也觉得怪怪的。 再次感激 smallduzi 兄~ 可惜我没有妹妹,不然就介绍给您认识啦~~ 呵呵~ 你认识我吗?怎么知道我没有女朋友???:) |
|
返回顶楼 | |
发表时间:2003-12-29
由于我不会设定hibernate.hbm.xml,所以一般我都用hibernate.properties取代的,linuxaid的问题我无法解决。
.......... 回应 smallduzi 兄,我是昨天才认识您的(读了您的文章之后),别怀疑,我们以前不认识的...因为我是马来西亚人....呵呵~ 我不知道您没有女朋友阿.....是你自己说的..... = = |
|
返回顶楼 | |
发表时间:2003-12-30
例子是没有任何问题的!
|
|
返回顶楼 | |
发表时间:2004-01-07
<generator class="foreign">
<param name="property">person</param> </generator> 请帮忙解释一下这个啊。我是刚学的,不要笑话我啊 |
|
返回顶楼 | |