Skip to content

Commit 513f11f

Browse files
committed
HHH-10217 - ModelBinder fails to bind version property when generated="always"
(cherry picked from commit 56fae44)
1 parent 1de3002 commit 513f11f

File tree

11 files changed

+110
-44
lines changed

11 files changed

+110
-44
lines changed

hibernate-core/src/main/java/org/hibernate/boot/model/source/internal/hbm/ModelBinder.java

Lines changed: 13 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2476,46 +2476,23 @@ private void bindProperty(
24762476

24772477
// generated properties can *never* be insertable...
24782478
if ( property.isInsertable() ) {
2479-
if ( singularAttributeSource.isInsertable() == null ) {
2480-
// insertable simply because that is the user did not specify
2481-
// anything; just override it
2482-
property.setInsertable( false );
2483-
}
2484-
else {
2485-
// the user specifically supplied insert="true",
2486-
// which constitutes an illegal combo
2487-
throw new MappingException(
2488-
String.format(
2489-
Locale.ENGLISH,
2490-
"Cannot specify both insert=\"true\" and generated=\"%s\" for property %s",
2491-
generationTiming.name().toLowerCase(Locale.ROOT),
2492-
propertySource.getName()
2493-
),
2494-
mappingDocument.getOrigin()
2495-
);
2496-
}
2479+
log.debugf(
2480+
"Property [%s] specified %s generation, setting insertable to false : %s",
2481+
propertySource.getName(),
2482+
generationTiming.name(),
2483+
mappingDocument.getOrigin()
2484+
);
2485+
property.setInsertable( false );
24972486
}
24982487

24992488
// properties generated on update can never be updatable...
25002489
if ( property.isUpdateable() && generationTiming == GenerationTiming.ALWAYS ) {
2501-
if ( singularAttributeSource.isUpdatable() == null ) {
2502-
// updatable only because the user did not specify
2503-
// anything; just override it
2504-
property.setUpdateable( false );
2505-
}
2506-
else {
2507-
// the user specifically supplied update="true",
2508-
// which constitutes an illegal combo
2509-
throw new MappingException(
2510-
String.format(
2511-
Locale.ENGLISH,
2512-
"Cannot specify both update=\"true\" and generated=\"%s\" for property %s",
2513-
generationTiming.name().toLowerCase(Locale.ROOT),
2514-
propertySource.getName()
2515-
),
2516-
mappingDocument.getOrigin()
2517-
);
2518-
}
2490+
log.debugf(
2491+
"Property [%s] specified ALWAYS generation, setting updateable to false : %s",
2492+
propertySource.getName(),
2493+
mappingDocument.getOrigin()
2494+
);
2495+
property.setUpdateable( false );
25192496
}
25202497
}
25212498
}

hibernate-core/src/test/java/org/hibernate/test/hbm/IndexTest.java renamed to hibernate-core/src/test/java/org/hibernate/test/hbm/index/IndexTest.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
55
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
66
*/
7-
package org.hibernate.test.hbm;
7+
package org.hibernate.test.hbm.index;
88

99
import java.util.Collections;
1010

@@ -18,7 +18,6 @@
1818
import org.hibernate.testing.FailureExpected;
1919
import org.hibernate.testing.TestForIssue;
2020
import org.hibernate.testing.junit4.BaseUnitTestCase;
21-
import org.hibernate.test.hbm.JournalingSchemaToolingTarget;
2221
import org.junit.After;
2322
import org.junit.Before;
2423
import org.junit.Test;

hibernate-core/src/test/java/org/hibernate/test/hbm/JournalingSchemaToolingTarget.java renamed to hibernate-core/src/test/java/org/hibernate/test/hbm/index/JournalingSchemaToolingTarget.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
55
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
66
*/
7-
package org.hibernate.test.hbm;
7+
package org.hibernate.test.hbm.index;
88

99
import java.util.ArrayList;
1010
import java.util.List;

hibernate-core/src/test/java/org/hibernate/test/hbm/Person.java renamed to hibernate-core/src/test/java/org/hibernate/test/hbm/index/Person.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
55
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
66
*/
7-
package org.hibernate.test.hbm;
7+
package org.hibernate.test.hbm.index;
88

99
public class Person {
1010
private long id;

hibernate-core/src/test/java/org/hibernate/test/hbm/PersonGroup.java renamed to hibernate-core/src/test/java/org/hibernate/test/hbm/index/PersonGroup.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
55
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
66
*/
7-
package org.hibernate.test.hbm;
7+
package org.hibernate.test.hbm.index;
88

99
/**
1010
* @author Steve Ebersole
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.test.hbm.version;
8+
9+
import org.hibernate.boot.Metadata;
10+
import org.hibernate.boot.MetadataSources;
11+
12+
import org.hibernate.testing.junit4.BaseUnitTestCase;
13+
import org.junit.Test;
14+
15+
/**
16+
* @author Steve Ebersole
17+
*/
18+
public class GeneratedVersionBindingTest extends BaseUnitTestCase {
19+
@Test
20+
public void testIt() {
21+
final Metadata metadata = new MetadataSources()
22+
.addResource("org/hibernate/test/hbm/version/Mappings.hbm.xml")
23+
.buildMetadata();
24+
}
25+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
/*
2+
* Hibernate, Relational Persistence for Idiomatic Java
3+
*
4+
* License: GNU Lesser General Public License (LGPL), version 2.1 or later.
5+
* See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>.
6+
*/
7+
package org.hibernate.test.hbm.version;
8+
9+
/**
10+
* @author Steve Ebersole
11+
*/
12+
public class Order {
13+
private Integer id;
14+
private String referenceCode;
15+
private byte[] rv;
16+
17+
public Integer getId() {
18+
return this.id;
19+
}
20+
21+
public void setId(Integer id) {
22+
this.id = id;
23+
}
24+
25+
public String getReferenceCode() {
26+
return this.referenceCode;
27+
}
28+
29+
public void setReferenceCode(String referenceCode) {
30+
this.referenceCode = referenceCode;
31+
}
32+
33+
public byte[] getRv() {
34+
return this.rv;
35+
}
36+
37+
public void setRv(byte[] rv) {
38+
this.rv = rv;
39+
}
40+
}

hibernate-core/src/test/resources/org/hibernate/test/hbm/index/person_manytoone.hbm.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
1010
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
1111

12-
<hibernate-mapping package="org.hibernate.test.hbm">
12+
<hibernate-mapping package="org.hibernate.test.hbm.index">
1313

1414
<class name="PersonGroup">
1515
<id name="id" type="long">

hibernate-core/src/test/resources/org/hibernate/test/hbm/index/person_property.hbm.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
1010
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
1111

12-
<hibernate-mapping package="org.hibernate.test.hbm">
12+
<hibernate-mapping package="org.hibernate.test.hbm.index">
1313

1414
<class name="Person">
1515
<id name="id" type="long">

hibernate-core/src/test/resources/org/hibernate/test/hbm/index/person_propertycolumn.hbm.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
1010
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
1111

12-
<hibernate-mapping package="org.hibernate.test.hbm">
12+
<hibernate-mapping package="org.hibernate.test.hbm.index">
1313

1414
<class name="Person">
1515
<id name="id" type="long">

0 commit comments

Comments
 (0)