Update of /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id
In directory sc8-pr-cvs1:/tmp/cvs-serv6518/id
Modified Files:
IdentifierGeneratorFactory.java
Added Files:
ForeignGenerator.java
Log Message:
added foreign id generator for 1-to-1 associations
--- NEW FILE: ForeignGenerator.java ---
package net.sf.hibernate.id;
import java.io.Serializable;
import java.sql.SQLException;
import java.util.Properties;
import net.sf.hibernate.HibernateException;
import net.sf.hibernate.MappingException;
import net.sf.hibernate.dialect.Dialect;
import net.sf.hibernate.engine.SessionImplementor;
import net.sf.hibernate.type.Type;
/**
* <b>foreign</b><br>
* <br>
* An <tt>Identifier</tt> generator that uses the value of the id property of an
* associated object
* <br>
* One mapping parameter id supported: property.
*/
public class ForeignGenerator implements IdentifierGenerator, Configurable {
private String propertyName;
/**
* @see net.sf.hibernate.id.IdentifierGenerator#generate(net.sf.hibernate.engine.SessionImplementor, java.lang.Object)
*/
public Serializable generate(SessionImplementor session, Object object)
throws SQLException, HibernateException {
Object associatedObject = session.getFactory()
.getClassMetadata( object.getClass() )
.getPropertyValue(object, propertyName);
return session.getEntityIdentifierIfNotUnsaved(associatedObject);
}
/**
* @see net.sf.hibernate.id.Configurable#configure(net.sf.hibernate.type.Type, java.util.Properties, net.sf.hibernate.dialect.Dialect)
*/
public void configure(Type type, Properties params, Dialect d)
throws MappingException {
propertyName = params.getProperty("property");
}
}
Index: IdentifierGeneratorFactory.java
===================================================================
RCS file: /cvsroot/hibernate/Hibernate2/src/net/sf/hibernate/id/IdentifierGeneratorFactory.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** IdentifierGeneratorFactory.java 29 Mar 2003 04:08:47 -0000 1.2
--- IdentifierGeneratorFactory.java 29 Mar 2003 04:20:18 -0000 1.3
***************
*** 43,47 ****
idgenerators.put("seqhilo", SequenceHiLoGenerator.class);
idgenerators.put("vm", CounterGenerator.class);
! idgenerators.put("onetoone", OneToOneGenerator.class);
}
--- 43,47 ----
idgenerators.put("seqhilo", SequenceHiLoGenerator.class);
idgenerators.put("vm", CounterGenerator.class);
! idgenerators.put("foreign", ForeignGenerator.class);
}
|