blob: 254301e541e7d87546ef6f14c6dc1a378f1dce4b [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Mon Dec 05 10:27:04 MSK 2022 -->
<title>BaseDataObject (cayenne-doc: Cayenne Documentation 4.2.RC2 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2022-12-05">
<link rel="stylesheet" type="text/css" href="../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../script.js"></script>
<script type="text/javascript" src="../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="BaseDataObject (cayenne-doc: Cayenne Documentation 4.2.RC2 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":10,"i25":10,"i26":10,"i27":10,"i28":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BaseDataObject.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://cayenne.apache.org" target="top">Apache Cayenne</a></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.apache.cayenne</a></div>
<h2 title="Class BaseDataObject" class="title">Class BaseDataObject</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li><a href="PersistentObject.html" title="class in org.apache.cayenne">org.apache.cayenne.PersistentObject</a></li>
<li>
<ul class="inheritance">
<li>org.apache.cayenne.BaseDataObject</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io" class="externalLink">Serializable</a></code>, <code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code>, <code><a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a></code>, <code><a href="Validating.html" title="interface in org.apache.cayenne">Validating</a></code></dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><code><a href="CayenneDataObject.html" title="class in org.apache.cayenne">CayenneDataObject</a></code>, <code><a href="HybridDataObject.html" title="class in org.apache.cayenne">HybridDataObject</a></code></dd>
</dl>
<hr>
<pre>public abstract class <span class="typeNameLabel">BaseDataObject</span>
extends <a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a>
implements <a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>, <a href="Validating.html" title="interface in org.apache.cayenne">Validating</a></pre>
<div class="block">Base implementation of <a href="DataObject.html" title="interface in org.apache.cayenne"><code>DataObject</code></a>,
have no assumption about how data is actually stored.
<p>
Three variants are currently supported:
<ul>
<li> field based storage, e.g. each entity class will directly define fields to store data
<li> <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util" class="externalLink"><code>Map</code></a> based storage, e.g. values will be stored in general Map (<a href="CayenneDataObject.html" title="class in org.apache.cayenne"><code>CayenneDataObject</code></a>)
<li> mixed fields and generic Map to store runtime attributes (<a href="HybridDataObject.html" title="class in org.apache.cayenne"><code>HybridDataObject</code></a>)
</ul>
<p>
This class can be used directly as superclass for field-based data objects.
<p>
To create own implementation of <a href="DataObject.html" title="interface in org.apache.cayenne"><code>DataObject</code></a> with custom field storage logic it is enough
to implement <a href="#readPropertyDirectly(java.lang.String)"><code>readPropertyDirectly(String)</code></a> and <a href="#writePropertyDirectly(java.lang.String,java.lang.Object)"><code>writePropertyDirectly(String, Object)</code></a> methods
and serialization support if needed (helper methods <a href="#writeState(java.io.ObjectOutputStream)"><code>writeState(ObjectOutputStream)</code></a>
and <a href="#readState(java.io.ObjectInputStream)"><code>readState(ObjectInputStream)</code></a> are provided).</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.1</dd>
<dt><span class="seeLabel">See Also:</span></dt>
<dd><a href="CayenneDataObject.html" title="class in org.apache.cayenne"><code>CayenneDataObject</code></a>,
<a href="HybridDataObject.html" title="class in org.apache.cayenne"><code>HybridDataObject</code></a>,
<a href="../../../serialized-form.html#org.apache.cayenne.BaseDataObject">Serialized Form</a></dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== FIELD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.summary">
<!-- -->
</a>
<h3>Field Summary</h3>
<table class="memberSummary">
<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Field</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>protected long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#snapshotVersion">snapshotVersion</a></span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.cayenne.PersistentObject">
<!-- -->
</a>
<h3>Fields inherited from class&nbsp;org.apache.cayenne.<a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a></h3>
<code><a href="PersistentObject.html#objectContext">objectContext</a>, <a href="PersistentObject.html#objectId">objectId</a>, <a href="PersistentObject.html#persistenceState">persistenceState</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="fields.inherited.from.class.org.apache.cayenne.DataObject">
<!-- -->
</a>
<h3>Fields inherited from interface&nbsp;org.apache.cayenne.<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></h3>
<code><a href="DataObject.html#DEFAULT_VERSION">DEFAULT_VERSION</a></code></li>
</ul>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">BaseDataObject</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#addToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">addToManyTarget</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</code></th>
<td class="colLast">
<div class="block">Adds an object to a to-many relationship.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#appendProperties(java.lang.StringBuffer)">appendProperties</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a>&nbsp;buffer)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#beforePropertyRead(java.lang.String)">beforePropertyRead</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#beforePropertyWrite(java.lang.String,java.lang.Object,java.lang.Object)">beforePropertyWrite</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;oldValue,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;newValue)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>long</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getSnapshotVersion()">getSnapshotVersion</a></span>()</code></th>
<td class="colLast">
<div class="block">Returns a version of a DataRow snapshot that was used to create this object.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readNestedProperty(java.lang.String)">readNestedProperty</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;path)</code></th>
<td class="colLast">
<div class="block">Returns a value of the property identified by a property path.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readProperty(java.lang.String)">readProperty</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propertyName)</code></th>
<td class="colLast">
<div class="block">Returns a value of the property identified by propName.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readPropertyDirectly(java.lang.String)">readPropertyDirectly</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName)</code></th>
<td class="colLast">
<div class="block">Returns mapped property value as curently stored in the DataObject.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readSerialized(java.io.ObjectInputStream)">readSerialized</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectInputStream</a>&nbsp;in)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#readState(java.io.ObjectInputStream)">readState</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectInputStream</a>&nbsp;in)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">removeToManyTarget</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</code></th>
<td class="colLast">
<div class="block">Removes an object from a to-many relationship.</div>
</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setObjectContext(org.apache.cayenne.ObjectContext)">setObjectContext</a></span>&#8203;(<a href="ObjectContext.html" title="interface in org.apache.cayenne">ObjectContext</a>&nbsp;objectContext)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setPersistenceState(int)">setPersistenceState</a></span>&#8203;(int&nbsp;persistenceState)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setReverseRelationship(java.lang.String,org.apache.cayenne.DataObject)">setReverseRelationship</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Initializes reverse relationship from object <code>val</code> to this
object.</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setSnapshotVersion(long)">setSnapshotVersion</a></span>&#8203;(long&nbsp;snapshotVersion)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setToManyTarget(java.lang.String,java.util.Collection,boolean)">setToManyTarget</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;? extends <a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&gt;&nbsp;values,
boolean&nbsp;setReverse)</code></th>
<td class="colLast">
<div class="block">Sets the relationships to the specified <code>DataObject</code> objects.</div>
</td>
</tr>
<tr id="i16" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#setToOneTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">setToOneTarget</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relationshipName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</code></th>
<td class="colLast">
<div class="block">Sets to-one relationship to a new value.</div>
</td>
</tr>
<tr id="i17" class="rowColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i18" class="altColor">
<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toStringBuffer(java.lang.StringBuffer,boolean)">toStringBuffer</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a>&nbsp;buffer,
boolean&nbsp;fullDesc)</code></th>
<td class="colLast">
<div class="block">A variation of "toString" method, that may be more efficient in some
cases.</div>
</td>
</tr>
<tr id="i19" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#unsetReverseRelationship(java.lang.String,org.apache.cayenne.DataObject)">unsetReverseRelationship</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Removes current object from reverse relationship of object
<code>val</code> to this object.</div>
</td>
</tr>
<tr id="i20" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateForDelete(org.apache.cayenne.validation.ValidationResult)">validateForDelete</a></span>&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</code></th>
<td class="colLast">
<div class="block">This implementation does nothing.</div>
</td>
</tr>
<tr id="i21" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateForInsert(org.apache.cayenne.validation.ValidationResult)">validateForInsert</a></span>&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</code></th>
<td class="colLast">
<div class="block">Calls <a href="#validateForSave(org.apache.cayenne.validation.ValidationResult)"><code>validateForSave(ValidationResult)</code></a>.</div>
</td>
</tr>
<tr id="i22" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateForSave(org.apache.cayenne.validation.ValidationResult)">validateForSave</a></span>&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</code></th>
<td class="colLast">
<div class="block">Performs property validation of the object, appending any validation
failures to the provided validationResult object.</div>
</td>
</tr>
<tr id="i23" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#validateForUpdate(org.apache.cayenne.validation.ValidationResult)">validateForUpdate</a></span>&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</code></th>
<td class="colLast">
<div class="block">Calls <a href="#validateForSave(org.apache.cayenne.validation.ValidationResult)"><code>validateForSave(ValidationResult)</code></a>.</div>
</td>
</tr>
<tr id="i24" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#willConnect(java.lang.String,org.apache.cayenne.Persistent)">willConnect</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relationshipName,
<a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a>&nbsp;object)</code></th>
<td class="colLast">
<div class="block">Called before establishing a relationship with another object.</div>
</td>
</tr>
<tr id="i25" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writeProperty(java.lang.String,java.lang.Object)">writeProperty</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Sets the property to the new value.</div>
</td>
</tr>
<tr id="i26" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writePropertyDirectly(java.lang.String,java.lang.Object)">writePropertyDirectly</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;val)</code></th>
<td class="colLast">
<div class="block">Modifies a value of a named property without altering the object state in any way,
and without triggering any database operations.</div>
</td>
</tr>
<tr id="i27" class="rowColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writeSerialized(java.io.ObjectOutputStream)">writeSerialized</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectOutputStream</a>&nbsp;out)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i28" class="altColor">
<td class="colFirst"><code>protected void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#writeState(java.io.ObjectOutputStream)">writeState</a></span>&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectOutputStream</a>&nbsp;out)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.cayenne.PersistentObject">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.apache.cayenne.<a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a></h3>
<code><a href="PersistentObject.html#getMapKey(java.lang.String,java.lang.Object)">getMapKey</a>, <a href="PersistentObject.html#getObjectContext()">getObjectContext</a>, <a href="PersistentObject.html#getObjectId()">getObjectId</a>, <a href="PersistentObject.html#getPersistenceState()">getPersistenceState</a>, <a href="PersistentObject.html#setObjectId(org.apache.cayenne.ObjectId)">setObjectId</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone()" title="class or interface in java.lang" class="externalLink">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang" class="externalLink">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize()" title="class or interface in java.lang" class="externalLink">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang" class="externalLink">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang" class="externalLink">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang" class="externalLink">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang" class="externalLink">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang" class="externalLink">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait(long,int)" title="class or interface in java.lang" class="externalLink">wait</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.apache.cayenne.Persistent">
<!-- -->
</a>
<h3>Methods inherited from interface&nbsp;org.apache.cayenne.<a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a></h3>
<code><a href="Persistent.html#getObjectContext()">getObjectContext</a>, <a href="Persistent.html#getObjectId()">getObjectId</a>, <a href="Persistent.html#getPersistenceState()">getPersistenceState</a>, <a href="Persistent.html#setObjectId(org.apache.cayenne.ObjectId)">setObjectId</a></code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ FIELD DETAIL =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="field.detail">
<!-- -->
</a>
<h3>Field Detail</h3>
<a id="snapshotVersion">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>snapshotVersion</h4>
<pre>protected&nbsp;long snapshotVersion</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>BaseDataObject</h4>
<pre>public&nbsp;BaseDataObject()</pre>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="readPropertyDirectly(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readPropertyDirectly</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;readPropertyDirectly&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#readPropertyDirectly(java.lang.String)">DataObject</a></code></span></div>
<div class="block">Returns mapped property value as curently stored in the DataObject. Returned value
maybe a fault or a real value. This method will not attempt to resolve faults, or
to read unmapped properties.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#readPropertyDirectly(java.lang.String)">readPropertyDirectly</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
</dl>
</li>
</ul>
<a id="writePropertyDirectly(java.lang.String,java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writePropertyDirectly</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;writePropertyDirectly&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;val)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#writePropertyDirectly(java.lang.String,java.lang.Object)">DataObject</a></code></span></div>
<div class="block">Modifies a value of a named property without altering the object state in any way,
and without triggering any database operations. This method is intended mostly for
internal use by Cayenne framework, and shouldn't be called from the application
code.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#writePropertyDirectly(java.lang.String,java.lang.Object)">writePropertyDirectly</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
</dl>
</li>
</ul>
<a id="beforePropertyRead(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beforePropertyRead</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;beforePropertyRead&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName)</pre>
</li>
</ul>
<a id="beforePropertyWrite(java.lang.String,java.lang.Object,java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>beforePropertyWrite</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;beforePropertyWrite&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;oldValue,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;newValue)</pre>
</li>
</ul>
<a id="readProperty(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readProperty</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;readProperty&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propertyName)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#readProperty(java.lang.String)">DataObject</a></code></span></div>
<div class="block">Returns a value of the property identified by propName. Resolves faults if needed.
This method can safely be used instead of or in addition to the auto-generated
property accessors in subclasses of CayenneDataObject.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#readProperty(java.lang.String)">readProperty</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
</dl>
</li>
</ul>
<a id="readNestedProperty(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readNestedProperty</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;readNestedProperty&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;path)</pre>
<div class="block">Returns a value of the property identified by a property path. Supports
reading both mapped and unmapped properties. Unmapped properties are
accessed in a manner consistent with JavaBeans specification.
<p>
Property path (or nested property) is a dot-separated path used to
traverse object relationships until the final object is found. If a null
object found while traversing path, null is returned. If a list is
encountered in the middle of the path, CayenneRuntimeException is thrown.
Unlike <a href="#readPropertyDirectly(java.lang.String)"><code>readPropertyDirectly(String)</code></a>, this method will resolve an
object if it is HOLLOW.
<p>
Examples:
</p>
<ul>
<li>Read this object property:<br>
<code>String name = (String)artist.readNestedProperty("name");</code><br>
<br>
</li>
<li>Read an object related to this object:<br>
<code>Gallery g = (Gallery)paintingInfo.readNestedProperty("toPainting.toGallery");</code>
<br>
<br>
</li>
<li>Read a property of an object related to this object: <br>
<code>String name = (String)painting.readNestedProperty("toArtist.artistName");</code>
<br>
<br>
</li>
<li>Read to-many relationship list:<br>
<code>List exhibits = (List)painting.readNestedProperty("toGallery.exhibitArray");</code>
<br>
<br>
</li>
<li>Read to-many relationship in the middle of the path:<br>
<code>List&lt;String&gt; names = (List&lt;String&gt;)artist.readNestedProperty("paintingArray.paintingName");</code>
<br>
<br>
</li>
</ul></div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#readNestedProperty(java.lang.String)">readNestedProperty</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.0.5</dd>
</dl>
</li>
</ul>
<a id="writeProperty(java.lang.String,java.lang.Object)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeProperty</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;writeProperty&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;propName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang" class="externalLink">Object</a>&nbsp;val)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#writeProperty(java.lang.String,java.lang.Object)">DataObject</a></code></span></div>
<div class="block">Sets the property to the new value. Resolves faults if needed. This method can be
safely used instead of or in addition to the auto-generated property modifiers to
set simple properties. Note that to set to-one relationships use
<a href="DataObject.html#setToOneTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)"><code>DataObject.setToOneTarget(String, DataObject, boolean)</code></a>.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#writeProperty(java.lang.String,java.lang.Object)">writeProperty</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>propName</code> - a name of the bean property being modified.</dd>
<dd><code>val</code> - a new value of the property.</dd>
</dl>
</li>
</ul>
<a id="removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>removeToManyTarget</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;removeToManyTarget&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">DataObject</a></code></span></div>
<div class="block">Removes an object from a to-many relationship.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">removeToManyTarget</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
</dl>
</li>
</ul>
<a id="addToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addToManyTarget</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;addToManyTarget&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#addToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">DataObject</a></code></span></div>
<div class="block">Adds an object to a to-many relationship.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#addToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">addToManyTarget</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
</dl>
</li>
</ul>
<a id="setToManyTarget(java.lang.String,java.util.Collection,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setToManyTarget</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util" class="externalLink">List</a>&lt;? extends <a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&gt;&nbsp;setToManyTarget&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util" class="externalLink">Collection</a>&lt;? extends <a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&gt;&nbsp;values,
boolean&nbsp;setReverse)</pre>
<div class="block">Sets the relationships to the specified <code>DataObject</code> objects.
<p>
New relationships will be created with
<a href="#addToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)"><code>addToManyTarget(String, org.apache.cayenne.DataObject, boolean)</code></a>,
already established relationships stay untouched. Missing relationships
will be removed with
<a href="#removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)"><code>removeToManyTarget(String, org.apache.cayenne.DataObject, boolean)</code></a>
and returnd as List. You may delete them manually.
</p>
<p>
Notice: Moving an object relationship to another object, is still needing
an manually "unregister" from the first object by
<a href="#removeToManyTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)"><code>removeToManyTarget(String, org.apache.cayenne.DataObject, boolean)</code></a>
</p></div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relName</code> - name of the relation</dd>
<dd><code>values</code> - <code>DataObject</code> objects of this
<code>Collection</code> are set to the object. No changes will
be made to the the <code>Collection</code>, a copy is used. It
is safe to pass a persisted <code>Collection</code> of another
object.</dd>
<dd><code>setReverse</code> - update reverse relationships</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd><code>List&lt;? extends DataObject&gt;</code> of unrelated
DataObjects. If no relationship was removed an empty List is
returned.</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang" class="externalLink">IllegalArgumentException</a></code> - if no relationship could be read by relName, or if the passed
<code>Collection</code> is null. To clear all relationships
use an empty <code>Collection</code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/UnsupportedOperationException.html?is-external=true" title="class or interface in java.lang" class="externalLink">UnsupportedOperationException</a></code> - if the relation Collection Type is neither
<code>java.util.Collection</code> nor
<code>java.util.Map</code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>4.0</dd>
</dl>
</li>
</ul>
<a id="setToOneTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setToOneTarget</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setToOneTarget&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relationshipName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;value,
boolean&nbsp;setReverse)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#setToOneTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">DataObject</a></code></span></div>
<div class="block">Sets to-one relationship to a new value. Resolves faults if needed. This method can
safely be used instead of or in addition to the auto-generated property modifiers
to set properties that are to-one relationships.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#setToOneTarget(java.lang.String,org.apache.cayenne.DataObject,boolean)">setToOneTarget</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relationshipName</code> - a name of the bean property being modified - same as the
name of ObjRelationship.</dd>
<dd><code>value</code> - a new value of the property.</dd>
<dd><code>setReverse</code> - whether to update the reverse relationship pointing from the old
and new values of the property to this object.</dd>
</dl>
</li>
</ul>
<a id="willConnect(java.lang.String,org.apache.cayenne.Persistent)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>willConnect</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;willConnect&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relationshipName,
<a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a>&nbsp;object)</pre>
<div class="block">Called before establishing a relationship with another object. Applies
"persistence by reachability" logic, pulling one of the two objects to a
DataConext of another object in case one of the objects is transient. If
both objects are persistent, and they don't have the same DataContext,
CayenneRuntimeException is thrown.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
</dl>
</li>
</ul>
<a id="setReverseRelationship(java.lang.String,org.apache.cayenne.DataObject)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setReverseRelationship</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;setReverseRelationship&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;val)</pre>
<div class="block">Initializes reverse relationship from object <code>val</code> to this
object.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>relName</code> - name of relationship from this object to <code>val</code>.</dd>
</dl>
</li>
</ul>
<a id="unsetReverseRelationship(java.lang.String,org.apache.cayenne.DataObject)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>unsetReverseRelationship</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;unsetReverseRelationship&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;relName,
<a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a>&nbsp;val)</pre>
<div class="block">Removes current object from reverse relationship of object
<code>val</code> to this object.</div>
</li>
</ul>
<a id="setPersistenceState(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setPersistenceState</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setPersistenceState&#8203;(int&nbsp;persistenceState)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Persistent.html#setPersistenceState(int)">setPersistenceState</a></code>&nbsp;in interface&nbsp;<code><a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="PersistentObject.html#setPersistenceState(int)">setPersistenceState</a></code>&nbsp;in class&nbsp;<code><a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a></code></dd>
</dl>
</li>
</ul>
<a id="getSnapshotVersion()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getSnapshotVersion</h4>
<pre class="methodSignature">public&nbsp;long&nbsp;getSnapshotVersion()</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="DataObject.html#getSnapshotVersion()">DataObject</a></code></span></div>
<div class="block">Returns a version of a DataRow snapshot that was used to create this object.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#getSnapshotVersion()">getSnapshotVersion</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="setSnapshotVersion(long)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSnapshotVersion</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setSnapshotVersion&#8203;(long&nbsp;snapshotVersion)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="DataObject.html#setSnapshotVersion(long)">setSnapshotVersion</a></code>&nbsp;in interface&nbsp;<code><a href="DataObject.html" title="interface in org.apache.cayenne">DataObject</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="validateForSave(org.apache.cayenne.validation.ValidationResult)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateForSave</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;validateForSave&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</pre>
<div class="block">Performs property validation of the object, appending any validation
failures to the provided validationResult object. This method is invoked
from "validateFor.." before committing a NEW or MODIFIED object to the
database. Validation includes checking for null values and value sizes.
CayenneDataObject subclasses may override this method, calling super.</div>
<dl>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="validateForInsert(org.apache.cayenne.validation.ValidationResult)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateForInsert</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;validateForInsert&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</pre>
<div class="block">Calls <a href="#validateForSave(org.apache.cayenne.validation.ValidationResult)"><code>validateForSave(ValidationResult)</code></a>. CayenneDataObject
subclasses may override it providing validation logic that should be
executed for the newly created objects before saving them.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Validating.html#validateForInsert(org.apache.cayenne.validation.ValidationResult)">validateForInsert</a></code>&nbsp;in interface&nbsp;<code><a href="Validating.html" title="interface in org.apache.cayenne">Validating</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="validateForUpdate(org.apache.cayenne.validation.ValidationResult)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateForUpdate</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;validateForUpdate&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</pre>
<div class="block">Calls <a href="#validateForSave(org.apache.cayenne.validation.ValidationResult)"><code>validateForSave(ValidationResult)</code></a>. CayenneDataObject
subclasses may override it providing validation logic that should be
executed for the modified objects before saving them.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Validating.html#validateForUpdate(org.apache.cayenne.validation.ValidationResult)">validateForUpdate</a></code>&nbsp;in interface&nbsp;<code><a href="Validating.html" title="interface in org.apache.cayenne">Validating</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="validateForDelete(org.apache.cayenne.validation.ValidationResult)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>validateForDelete</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;validateForDelete&#8203;(<a href="validation/ValidationResult.html" title="class in org.apache.cayenne.validation">ValidationResult</a>&nbsp;validationResult)</pre>
<div class="block">This implementation does nothing. CayenneDataObject subclasses may
override it providing validation logic that should be executed for the
deleted objects before committing them.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Validating.html#validateForDelete(org.apache.cayenne.validation.ValidationResult)">validateForDelete</a></code>&nbsp;in interface&nbsp;<code><a href="Validating.html" title="interface in org.apache.cayenne">Validating</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.1</dd>
</dl>
</li>
</ul>
<a id="setObjectContext(org.apache.cayenne.ObjectContext)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setObjectContext</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;setObjectContext&#8203;(<a href="ObjectContext.html" title="interface in org.apache.cayenne">ObjectContext</a>&nbsp;objectContext)</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Persistent.html#setObjectContext(org.apache.cayenne.ObjectContext)">setObjectContext</a></code>&nbsp;in interface&nbsp;<code><a href="Persistent.html" title="interface in org.apache.cayenne">Persistent</a></code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="PersistentObject.html#setObjectContext(org.apache.cayenne.ObjectContext)">setObjectContext</a></code>&nbsp;in class&nbsp;<code><a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a></code></dd>
<dt><span class="simpleTagLabel">Since:</span></dt>
<dd>1.2</dd>
</dl>
</li>
</ul>
<a id="writeSerialized(java.io.ObjectOutputStream)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeSerialized</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;writeSerialized&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectOutputStream</a>&nbsp;out)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="readSerialized(java.io.ObjectInputStream)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readSerialized</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;readSerialized&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectInputStream</a>&nbsp;in)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang" class="externalLink">ClassNotFoundException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang" class="externalLink">ClassNotFoundException</a></code></dd>
</dl>
</li>
</ul>
<a id="writeState(java.io.ObjectOutputStream)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>writeState</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;writeState&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectOutputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectOutputStream</a>&nbsp;out)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code></dd>
</dl>
</li>
</ul>
<a id="readState(java.io.ObjectInputStream)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>readState</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;readState&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/ObjectInputStream.html?is-external=true" title="class or interface in java.io" class="externalLink">ObjectInputStream</a>&nbsp;in)
throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a>,
<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang" class="externalLink">ClassNotFoundException</a></pre>
<dl>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io" class="externalLink">IOException</a></code></dd>
<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/ClassNotFoundException.html?is-external=true" title="class or interface in java.lang" class="externalLink">ClassNotFoundException</a></code></dd>
</dl>
</li>
</ul>
<a id="toStringBuffer(java.lang.StringBuffer,boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toStringBuffer</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a>&nbsp;toStringBuffer&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a>&nbsp;buffer,
boolean&nbsp;fullDesc)</pre>
<div class="block">A variation of "toString" method, that may be more efficient in some
cases. For example when printing a list of objects into the same String.</div>
</li>
</ul>
<a id="appendProperties(java.lang.StringBuffer)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>appendProperties</h4>
<pre class="methodSignature">protected&nbsp;void&nbsp;appendProperties&#8203;(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuffer.html?is-external=true" title="class or interface in java.lang" class="externalLink">StringBuffer</a>&nbsp;buffer)</pre>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang" class="externalLink">String</a>&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="PersistentObject.html#toString()">toString</a></code>&nbsp;in class&nbsp;<code><a href="PersistentObject.html" title="class in org.apache.cayenne">PersistentObject</a></code></dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/BaseDataObject.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../index-all.html">Index</a></li>
<li><a href="../../../help-doc.html">Help</a></li>
</ul>
<div class="aboutLanguage"><a href="http://cayenne.apache.org" target="top">Apache Cayenne</a></div>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 2001&#x2013;2022 <a href="https://cayenne.apache.org/">Apache Cayenne</a>. All rights reserved.</small></p>
</footer>
</body>
</html>