[jOOQ/jOOQ#10386] Add Settings to govern unchanged TableRecord.insert() and UpdatableRecord.update() or store() calls
- TODO: The UpdatableRecord.merge() implementation is not yet correct
This commit is contained in:
parent
6191677da4
commit
fd8a00bb33
42
jOOQ/src/main/java/org/jooq/conf/UpdateUnchangedRecords.java
Normal file
42
jOOQ/src/main/java/org/jooq/conf/UpdateUnchangedRecords.java
Normal file
@ -0,0 +1,42 @@
|
||||
|
||||
package org.jooq.conf;
|
||||
|
||||
import javax.xml.bind.annotation.XmlEnum;
|
||||
import javax.xml.bind.annotation.XmlType;
|
||||
|
||||
|
||||
/**
|
||||
* <p>Java class for UpdateUnchangedRecords.
|
||||
*
|
||||
* <p>The following schema fragment specifies the expected content contained within this class.
|
||||
* <p>
|
||||
* <pre>
|
||||
* <simpleType name="UpdateUnchangedRecords">
|
||||
* <restriction base="{http://www.w3.org/2001/XMLSchema}string">
|
||||
* <enumeration value="NEVER"/>
|
||||
* <enumeration value="SET_PRIMARY_KEY_TO_ITSELF"/>
|
||||
* <enumeration value="SET_NON_PRIMARY_KEY_TO_THEMSELVES"/>
|
||||
* <enumeration value="SET_NON_PRIMARY_KEY_TO_RECORD_VALUES"/>
|
||||
* </restriction>
|
||||
* </simpleType>
|
||||
* </pre>
|
||||
*
|
||||
*/
|
||||
@XmlType(name = "UpdateUnchangedRecords")
|
||||
@XmlEnum
|
||||
public enum UpdateUnchangedRecords {
|
||||
|
||||
NEVER,
|
||||
SET_PRIMARY_KEY_TO_ITSELF,
|
||||
SET_NON_PRIMARY_KEY_TO_THEMSELVES,
|
||||
SET_NON_PRIMARY_KEY_TO_RECORD_VALUES;
|
||||
|
||||
public String value() {
|
||||
return name();
|
||||
}
|
||||
|
||||
public static UpdateUnchangedRecords fromValue(String v) {
|
||||
return valueOf(v);
|
||||
}
|
||||
|
||||
}
|
||||
@ -38,6 +38,7 @@
|
||||
package org.jooq.impl;
|
||||
|
||||
import static java.lang.Boolean.TRUE;
|
||||
import static java.util.Arrays.asList;
|
||||
// ...
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
import static org.jooq.conf.SettingsTools.updatablePrimaryKeys;
|
||||
@ -308,13 +309,15 @@ public class UpdatableRecordImpl<R extends UpdatableRecord<R>> extends TableReco
|
||||
|
||||
case SET_NON_PRIMARY_KEY_TO_THEMSELVES:
|
||||
for (Field<?> field : storeFields)
|
||||
query.addValue(field, (Field) field);
|
||||
if (!asList(keys).contains(field))
|
||||
query.addValue(field, (Field) field);
|
||||
|
||||
break;
|
||||
|
||||
case SET_NON_PRIMARY_KEY_TO_RECORD_VALUES:
|
||||
for (Field<?> field : storeFields)
|
||||
changed(field, true);
|
||||
if (!asList(keys).contains(field))
|
||||
changed(field, true);
|
||||
|
||||
addChangedValues(storeFields, query, merge);
|
||||
break;
|
||||
|
||||
1072
jOOQ/src/main/resources/xsd/jooq-runtime-3.14.0.xsd
Normal file
1072
jOOQ/src/main/resources/xsd/jooq-runtime-3.14.0.xsd
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user