This commit is contained in:
vladmihalcea 2016-01-25 11:36:25 +02:00
parent a8ee683280
commit dc991d29d9
22 changed files with 41 additions and 41 deletions

View File

@ -149,7 +149,7 @@ The `LockMode` class defines the different lock levels that Hibernate can acquir
|LockMode.WRITE |acquired automatically when Hibernate updates or inserts a row. |LockMode.WRITE |acquired automatically when Hibernate updates or inserts a row.
|LockMode.UPGRADE |acquired upon explicit user request using `SELECT ... FOR UPDATE` on databases which support that syntax. |LockMode.UPGRADE |acquired upon explicit user request using `SELECT ... FOR UPDATE` on databases which support that syntax.
|LockMode.UPGRADE_NOWAIT |acquired upon explicit user request using a `SELECT ... FOR UPDATE NOWAIT` in Oracle. |LockMode.UPGRADE_NOWAIT |acquired upon explicit user request using a `SELECT ... FOR UPDATE NOWAIT` in Oracle.
|LockMode.UPGRADE_SKIPLOCKED |acquired upon explicit user request using a `SELECT ... FOR UPDATE SKIP LOCKED` in Oracle, or `SELECT ... with (rowlock,updlock,readpast) in SQL Server`. |LockMode.UPGRADE_SKIPLOCKED |acquired upon explicit user request using a `SELECT ... FOR UPDATE SKIP LOCKED` in Oracle, or `SELECT ... with (rowlock, updlock, readpast) in SQL Server`.
|LockMode.READ |acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. It can be re-acquired by explicit user request. |LockMode.READ |acquired automatically when Hibernate reads data under Repeatable Read or Serializable isolation level. It can be re-acquired by explicit user request.
|LockMode.NONE |The absence of a lock. All objects switch to this lock mode at the end of a Transaction. Objects associated with the session via a call to update() or saveOrUpdate() also start out in this lock mode. |LockMode.NONE |The absence of a lock. All objects switch to this lock mode at the end of a Transaction. Objects associated with the session via a call to update() or saveOrUpdate() also start out in this lock mode.
|======================================================================= |=======================================================================

View File

@ -31,7 +31,7 @@ public void doSomeWork() {
if ( session.getTransaction().getStatus() == ACTIVE if ( session.getTransaction().getStatus() == ACTIVE
|| session.getTransaction().getStatus() == MARKED_ROLLBACK ) { || session.getTransaction().getStatus() == MARKED_ROLLBACK ) {
// calls TM/UT commit method, assuming we are initiator; // calls TM/UT commit method, assuming we are initiator;
// otherwise marks the JTA trsnaction for rollback only // otherwise marks the JTA transaction for rollback only
session.getTransaction().rollback(); session.getTransaction().rollback();
} }
// handle the underlying error // handle the underlying error

View File

@ -397,7 +397,7 @@ hibernate.max_fetch_depth 1
## rollback generated identifier values of deleted entities to default values ## rollback generated identifier values of deleted entities to default values
#hibernate.use_identifer_rollback true #hibernate.use_identifier_rollback true
## enable bytecode reflection optimizer (disabled by default) ## enable bytecode reflection optimizer (disabled by default)

View File

@ -356,7 +356,7 @@ hibernate.default_batch_fetch_size 8
## rollback generated identifier values of deleted entities to default values ## rollback generated identifier values of deleted entities to default values
#hibernate.use_identifer_rollback true #hibernate.use_identifier_rollback true
## enable bytecode reflection optimizer (disabled by default) ## enable bytecode reflection optimizer (disabled by default)

View File

@ -117,7 +117,7 @@ public interface Criteria extends CriteriaSpecification {
* Specify an association fetching strategy for an association or a * Specify an association fetching strategy for an association or a
* collection of values. * collection of values.
* *
* @param associationPath a dot seperated property path * @param associationPath a dot separated property path
* @param mode The fetch mode for the referenced association * @param mode The fetch mode for the referenced association
* *
* @return this (for method chaining) * @return this (for method chaining)
@ -152,7 +152,7 @@ public interface Criteria extends CriteriaSpecification {
* Functionally equivalent to {@link #createAlias(String, String, JoinType )} using * Functionally equivalent to {@link #createAlias(String, String, JoinType )} using
* {@link JoinType#INNER_JOIN} for the joinType. * {@link JoinType#INNER_JOIN} for the joinType.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* *
* @return this (for method chaining) * @return this (for method chaining)
@ -168,7 +168,7 @@ public interface Criteria extends CriteriaSpecification {
* The joinType is expected to be one of {@link JoinType#INNER_JOIN} (the default), * The joinType is expected to be one of {@link JoinType#INNER_JOIN} (the default),
* {@link JoinType#FULL_JOIN}, or {@link JoinType#LEFT_OUTER_JOIN}. * {@link JoinType#FULL_JOIN}, or {@link JoinType#LEFT_OUTER_JOIN}.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
@ -185,7 +185,7 @@ public interface Criteria extends CriteriaSpecification {
* The joinType is expected to be one of {@link #INNER_JOIN} (the default), * The joinType is expected to be one of {@link #INNER_JOIN} (the default),
* {@link #FULL_JOIN}, or {@link #LEFT_JOIN}. * {@link #FULL_JOIN}, or {@link #LEFT_JOIN}.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
@ -204,7 +204,7 @@ public interface Criteria extends CriteriaSpecification {
* The joinType is expected to be one of {@link JoinType#INNER_JOIN} (the default), * The joinType is expected to be one of {@link JoinType#INNER_JOIN} (the default),
* {@link JoinType#FULL_JOIN}, or {@link JoinType#LEFT_OUTER_JOIN}. * {@link JoinType#FULL_JOIN}, or {@link JoinType#LEFT_OUTER_JOIN}.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause) * @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause)
@ -222,7 +222,7 @@ public interface Criteria extends CriteriaSpecification {
* The joinType is expected to be one of {@link #INNER_JOIN} (the default), * The joinType is expected to be one of {@link #INNER_JOIN} (the default),
* {@link #FULL_JOIN}, or {@link #LEFT_JOIN}. * {@link #FULL_JOIN}, or {@link #LEFT_JOIN}.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause) * @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause)
@ -241,7 +241,7 @@ public interface Criteria extends CriteriaSpecification {
* Functionally equivalent to {@link #createCriteria(String, org.hibernate.sql.JoinType)} using * Functionally equivalent to {@link #createCriteria(String, org.hibernate.sql.JoinType)} using
* {@link JoinType#INNER_JOIN} for the joinType. * {@link JoinType#INNER_JOIN} for the joinType.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* *
* @return the created "sub criteria" * @return the created "sub criteria"
* *
@ -253,7 +253,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, using the * Create a new <tt>Criteria</tt>, "rooted" at the associated entity, using the
* specified join type. * specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
* @return the created "sub criteria" * @return the created "sub criteria"
@ -266,7 +266,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, using the * Create a new <tt>Criteria</tt>, "rooted" at the associated entity, using the
* specified join type. * specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
* @return the created "sub criteria" * @return the created "sub criteria"
@ -284,7 +284,7 @@ public interface Criteria extends CriteriaSpecification {
* Functionally equivalent to {@link #createCriteria(String, String, org.hibernate.sql.JoinType)} using * Functionally equivalent to {@link #createCriteria(String, String, org.hibernate.sql.JoinType)} using
* {@link JoinType#INNER_JOIN} for the joinType. * {@link JoinType#INNER_JOIN} for the joinType.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* *
* @return the created "sub criteria" * @return the created "sub criteria"
@ -297,7 +297,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, * Create a new <tt>Criteria</tt>, "rooted" at the associated entity,
* assigning the given alias and using the specified join type. * assigning the given alias and using the specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
@ -311,7 +311,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, * Create a new <tt>Criteria</tt>, "rooted" at the associated entity,
* assigning the given alias and using the specified join type. * assigning the given alias and using the specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* *
@ -328,7 +328,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, * Create a new <tt>Criteria</tt>, "rooted" at the associated entity,
* assigning the given alias and using the specified join type. * assigning the given alias and using the specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause) * @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause)
@ -343,7 +343,7 @@ public interface Criteria extends CriteriaSpecification {
* Create a new <tt>Criteria</tt>, "rooted" at the associated entity, * Create a new <tt>Criteria</tt>, "rooted" at the associated entity,
* assigning the given alias and using the specified join type. * assigning the given alias and using the specified join type.
* *
* @param associationPath A dot-seperated property path * @param associationPath A dot-separated property path
* @param alias The alias to assign to the joined association (for later reference). * @param alias The alias to assign to the joined association (for later reference).
* @param joinType The type of join to use. * @param joinType The type of join to use.
* @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause) * @param withClause The criteria to be added to the join condition (<tt>ON</tt> clause)

View File

@ -21,7 +21,7 @@ import org.hibernate.internal.util.compare.EqualsHelper;
* *
* Generally speaking this information would come from annotations * Generally speaking this information would come from annotations
* ({@link org.hibernate.annotations.TypeDef}) or XML mappings. An alternative form of * ({@link org.hibernate.annotations.TypeDef}) or XML mappings. An alternative form of
* supplying custom types is programatically via one of:<ul> * supplying custom types is programmatically via one of:<ul>
* <li>{@link org.hibernate.boot.MetadataBuilder#applyBasicType(org.hibernate.type.BasicType)}</li> * <li>{@link org.hibernate.boot.MetadataBuilder#applyBasicType(org.hibernate.type.BasicType)}</li>
* <li>{@link org.hibernate.boot.MetadataBuilder#applyBasicType(org.hibernate.usertype.UserType, String[])}</li> * <li>{@link org.hibernate.boot.MetadataBuilder#applyBasicType(org.hibernate.usertype.UserType, String[])}</li>
* <li>{@link org.hibernate.boot.MetadataBuilder#applyTypes(TypeContributor)}</li> * <li>{@link org.hibernate.boot.MetadataBuilder#applyTypes(TypeContributor)}</li>

View File

@ -766,7 +766,7 @@ public class Configuration {
/** /**
* Adds the AttributeConverter instance to this Configuration. This form is mainly intended for developers * Adds the AttributeConverter instance to this Configuration. This form is mainly intended for developers
* to programatically add their own AttributeConverter instance. HEM, instead, uses the * to programmatically add their own AttributeConverter instance. HEM, instead, uses the
* {@link #addAttributeConverter(Class, boolean)} form * {@link #addAttributeConverter(Class, boolean)} form
* *
* @param attributeConverter The AttributeConverter instance. * @param attributeConverter The AttributeConverter instance.
@ -777,7 +777,7 @@ public class Configuration {
/** /**
* Adds the AttributeConverter instance to this Configuration. This form is mainly intended for developers * Adds the AttributeConverter instance to this Configuration. This form is mainly intended for developers
* to programatically add their own AttributeConverter instance. HEM, instead, uses the * to programmatically add their own AttributeConverter instance. HEM, instead, uses the
* {@link #addAttributeConverter(Class, boolean)} form * {@link #addAttributeConverter(Class, boolean)} form
* *
* @param attributeConverter The AttributeConverter instance. * @param attributeConverter The AttributeConverter instance.

View File

@ -352,7 +352,7 @@ public class DefaultFlushEntityEventListener implements FlushEntityEventListener
} }
/** /**
* Convience method to retreive an entities next version value * Convenience method to retrieve an entities next version value
*/ */
private Object getNextVersion(FlushEntityEvent event) throws HibernateException { private Object getNextVersion(FlushEntityEvent event) throws HibernateException {

View File

@ -131,7 +131,7 @@ public final class HqlParser extends HqlBaseParser {
// If the token can tell us if it could be an identifier... // If the token can tell us if it could be an identifier...
if ( token instanceof HqlToken ) { if ( token instanceof HqlToken ) {
HqlToken hqlToken = (HqlToken) token; HqlToken hqlToken = (HqlToken) token;
// ... and the token could be an identifer and the error is // ... and the token could be an identifier and the error is
// a mismatched token error ... // a mismatched token error ...
if ( hqlToken.isPossibleID() && ( ex instanceof MismatchedTokenException ) ) { if ( hqlToken.isPossibleID() && ( ex instanceof MismatchedTokenException ) ) {
MismatchedTokenException mte = (MismatchedTokenException) ex; MismatchedTokenException mte = (MismatchedTokenException) ex;

View File

@ -103,7 +103,7 @@ public class FromClause extends HqlSqlWalkerNode implements HqlSqlTokenTypes, Di
} }
/** /**
* Retreives the from-element represented by the given alias. * Retrieve the from-element represented by the given alias.
* *
* @param aliasOrClassName The alias by which to locate the from-element. * @param aliasOrClassName The alias by which to locate the from-element.
* *

View File

@ -45,7 +45,7 @@ public class InsertStatement extends AbstractStatement {
} }
/** /**
* Retreive this insert statement's select-clause. * Retrieve this insert statement's select-clause.
* *
* @return The select-clause. * @return The select-clause.
*/ */

View File

@ -15,7 +15,7 @@ import antlr.collections.AST;
*/ */
public interface RestrictableStatement extends Statement { public interface RestrictableStatement extends Statement {
/** /**
* Retreives the from-clause in effect for this statement. * Retrieve the from-clause in effect for this statement.
* *
* @return The from-clause for this statement; could be null if the from-clause * @return The from-clause for this statement; could be null if the from-clause
* has not yet been parsed/generated. * has not yet been parsed/generated.
@ -31,7 +31,7 @@ public interface RestrictableStatement extends Statement {
public boolean hasWhereClause(); public boolean hasWhereClause();
/** /**
* Retreives the where-clause defining the restriction(s) in effect for * Retrieve the where-clause defining the restriction(s) in effect for
* this statement. * this statement.
* <p/> * <p/>
* Note that this will generate a where-clause if one was not found, so caution * Note that this will generate a where-clause if one was not found, so caution

View File

@ -15,7 +15,7 @@ import org.hibernate.hql.internal.ast.HqlSqlWalker;
public interface Statement { public interface Statement {
/** /**
* Retreive the "phase 2" walker which generated this statement tree. * Retrieve the "phase 2" walker which generated this statement tree.
* *
* @return The HqlSqlWalker instance which generated this statement tree. * @return The HqlSqlWalker instance which generated this statement tree.
*/ */

View File

@ -334,7 +334,7 @@ public abstract class AbstractQueryImpl implements Query {
} }
/** /**
* Retreive the value map for any named parameter lists (i.e., for * Retrieve the value map for any named parameter lists (i.e., for
* auto-expansion) bound to this query. * auto-expansion) bound to this query.
* *
* @return The parameter list value map. * @return The parameter list value map.
@ -344,7 +344,7 @@ public abstract class AbstractQueryImpl implements Query {
} }
/** /**
* Retreives the list of parameter values bound to this query for * Retrieve the list of parameter values bound to this query for
* ordinal parameters. * ordinal parameters.
* *
* @return The ordinal parameter values. * @return The ordinal parameter values.
@ -354,7 +354,7 @@ public abstract class AbstractQueryImpl implements Query {
} }
/** /**
* Retreives the list of parameter {@link Type type}s bound to this query for * Retrieve the list of parameter {@link Type type}s bound to this query for
* ordinal parameters. * ordinal parameters.
* *
* @return The ordinal parameter types. * @return The ordinal parameter types.

View File

@ -1239,7 +1239,7 @@ public interface CoreMessageLogger extends BasicLogger {
void unableToResolveMappingFile(String xmlFile); void unableToResolveMappingFile(String xmlFile);
@LogMessage(level = INFO) @LogMessage(level = INFO)
@Message(value = "Unable to retreive cache from JNDI [%s]: %s", id = 361) @Message(value = "Unable to retrieve cache from JNDI [%s]: %s", id = 361)
void unableToRetrieveCache( void unableToRetrieveCache(
String namespace, String namespace,
String message); String message);

View File

@ -213,7 +213,7 @@ public class Column implements Selectable, Serializable, Cloneable {
* Returns the underlying columns sqltypecode. * Returns the underlying columns sqltypecode.
* If null, it is because the sqltype code is unknown. * If null, it is because the sqltype code is unknown.
* <p/> * <p/>
* Use #getSqlTypeCode(Mapping) to retreive the sqltypecode used * Use #getSqlTypeCode(Mapping) to retrieve the sqltypecode used
* for the columns associated Value/Type. * for the columns associated Value/Type.
* *
* @return sqlTypeCode if it is set, otherwise null. * @return sqlTypeCode if it is set, otherwise null.

View File

@ -1215,7 +1215,7 @@ public abstract class AbstractEntityPersister
public String[] getIdentifierAliases(String suffix) { public String[] getIdentifierAliases(String suffix) {
// NOTE: this assumes something about how propertySelectFragment is implemented by the subclass! // NOTE: this assumes something about how propertySelectFragment is implemented by the subclass!
// was toUnqotedAliasStrings( getIdentiferColumnNames() ) before - now tried // was toUnqotedAliasStrings( getIdentifierColumnNames() ) before - now tried
// to remove that unqoting and missing aliases.. // to remove that unqoting and missing aliases..
return new Alias( suffix ).toAliasStrings( getIdentifierAliases() ); return new Alias( suffix ).toAliasStrings( getIdentifierAliases() );
} }

View File

@ -34,7 +34,7 @@ public interface Getter extends Serializable {
/** /**
* Get the property value from the given owner instance. * Get the property value from the given owner instance.
* *
* @param owner The instance containing the value to be retreived. * @param owner The instance containing the value to be retrieved.
* @param mergeMap a map of merged persistent instances to detached instances * @param mergeMap a map of merged persistent instances to detached instances
* @param session The session from which this request originated. * @param session The session from which this request originated.
* *

View File

@ -23,7 +23,7 @@ import org.hibernate.tuple.Tuplizer;
*/ */
public interface ComponentTuplizer extends Tuplizer, Serializable { public interface ComponentTuplizer extends Tuplizer, Serializable {
/** /**
* Retreive the current value of the parent property. * Retrieve the current value of the parent property.
* *
* @param component The component instance from which to extract the parent * @param component The component instance from which to extract the parent
* property value. * property value.

View File

@ -178,7 +178,7 @@ public abstract class AbstractEntityTuplizer implements EntityTuplizer {
} }
/** /**
* Retreives the defined entity-name for the tuplized entity. * Retrieves the defined entity-name for the tuplized entity.
* *
* @return The entity-name. * @return The entity-name.
*/ */

View File

@ -84,7 +84,7 @@ public class DbTimestampType extends TimestampType {
Timestamp ts = rs.getTimestamp( 1 ); Timestamp ts = rs.getTimestamp( 1 );
if ( LOG.isTraceEnabled() ) { if ( LOG.isTraceEnabled() ) {
LOG.tracev( LOG.tracev(
"Current timestamp retreived from db : {0} (nanos={1}, time={2})", "Current timestamp retrieved from db : {0} (nanos={1}, time={2})",
ts, ts,
ts.getNanos(), ts.getNanos(),
ts.getTime() ts.getTime()
@ -119,7 +119,7 @@ public class DbTimestampType extends TimestampType {
Timestamp ts = cs.getTimestamp( 1 ); Timestamp ts = cs.getTimestamp( 1 );
if ( LOG.isTraceEnabled() ) { if ( LOG.isTraceEnabled() ) {
LOG.tracev( LOG.tracev(
"Current timestamp retreived from db : {0} (nanos={1}, time={2})", "Current timestamp retrieved from db : {0} (nanos={1}, time={2})",
ts, ts,
ts.getNanos(), ts.getNanos(),
ts.getTime() ts.getTime()

View File

@ -147,7 +147,7 @@ public class AuditQueryCreator {
* Additional conditions that the results must satisfy may be specified. * Additional conditions that the results must satisfy may be specified.
* *
* @param c Class of the entities for which to query. * @param c Class of the entities for which to query.
* @param selectEntitiesOnly If true, instead of a list of three-element arrays, a list of entites will be * @param selectEntitiesOnly If true, instead of a list of three-element arrays, a list of entities will be
* returned as a result of executing this query. * returned as a result of executing this query.
* @param selectDeletedEntities If true, also revisions where entities were deleted will be returned. The additional * @param selectDeletedEntities If true, also revisions where entities were deleted will be returned. The additional
* entities will have revision type "delete", and contain no data (all fields null), except for the id field. * entities will have revision type "delete", and contain no data (all fields null), except for the id field.
@ -181,7 +181,7 @@ public class AuditQueryCreator {
* *
* @param c Class of the entities for which to query. * @param c Class of the entities for which to query.
* @param entityName Name of the entity (if can't be guessed basing on the {@code c}). * @param entityName Name of the entity (if can't be guessed basing on the {@code c}).
* @param selectEntitiesOnly If true, instead of a list of three-element arrays, a list of entites will be * @param selectEntitiesOnly If true, instead of a list of three-element arrays, a list of entities will be
* returned as a result of executing this query. * returned as a result of executing this query.
* @param selectDeletedEntities If true, also revisions where entities were deleted will be returned. The additional * @param selectDeletedEntities If true, also revisions where entities were deleted will be returned. The additional
* entities will have revision type "delete", and contain no data (all fields null), except for the id field. * entities will have revision type "delete", and contain no data (all fields null), except for the id field.