Skip to content

Commit 8aeaf28

Browse files
committed
HHH-6321 : Add org.hibernate.metamodel.binding.CascadeType.toCascadeStyle()
1 parent 7e2e1e3 commit 8aeaf28

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/binding/CascadeType.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@
2626
import java.util.HashMap;
2727
import java.util.Map;
2828

29+
import org.hibernate.MappingException;
30+
import org.hibernate.engine.spi.CascadeStyle;
31+
2932

3033
/**
3134
* @author Hardy Ferentschik
@@ -120,6 +123,22 @@ public enum CascadeType {
120123
jpaCascadeTypeToHibernateCascadeType.put( javax.persistence.CascadeType.DETACH, EVICT );
121124
}
122125

126+
private static final Map<CascadeType, CascadeStyle> cascadeTypeToCascadeStyle = new HashMap<CascadeType, CascadeStyle>();
127+
static {
128+
cascadeTypeToCascadeStyle.put( ALL, CascadeStyle.ALL );
129+
cascadeTypeToCascadeStyle.put( ALL_DELETE_ORPHAN, CascadeStyle.ALL_DELETE_ORPHAN );
130+
cascadeTypeToCascadeStyle.put( UPDATE, CascadeStyle.UPDATE );
131+
cascadeTypeToCascadeStyle.put( PERSIST, CascadeStyle.PERSIST );
132+
cascadeTypeToCascadeStyle.put( MERGE, CascadeStyle.MERGE );
133+
cascadeTypeToCascadeStyle.put( LOCK, CascadeStyle.LOCK );
134+
cascadeTypeToCascadeStyle.put( REFRESH, CascadeStyle.REFRESH );
135+
cascadeTypeToCascadeStyle.put( REPLICATE, CascadeStyle.REPLICATE );
136+
cascadeTypeToCascadeStyle.put( EVICT, CascadeStyle.EVICT );
137+
cascadeTypeToCascadeStyle.put( DELETE, CascadeStyle.DELETE );
138+
cascadeTypeToCascadeStyle.put( DELETE_ORPHAN, CascadeStyle.DELETE_ORPHAN );
139+
cascadeTypeToCascadeStyle.put( NONE, CascadeStyle.NONE );
140+
}
141+
123142
/**
124143
* @param hbmOptionName the cascading option as specified in the hbm mapping file
125144
*
@@ -137,4 +156,17 @@ public static CascadeType getCascadeType(String hbmOptionName) {
137156
public static CascadeType getCascadeType(javax.persistence.CascadeType jpaCascade) {
138157
return jpaCascadeTypeToHibernateCascadeType.get( jpaCascade );
139158
}
159+
160+
/**
161+
* @return Returns the {@code CascadeStyle} that corresponds to this {@code CascadeType}
162+
*
163+
* @throws MappingException if there is not corresponding {@code CascadeStyle}
164+
*/
165+
public CascadeStyle toCascadeStyle() {
166+
CascadeStyle cascadeStyle = cascadeTypeToCascadeStyle.get( this );
167+
if ( cascadeStyle == null ) {
168+
throw new MappingException( "No CascadeStyle that corresponds with CascadeType=" + this.name() );
169+
}
170+
return cascadeStyle;
171+
}
140172
}

0 commit comments

Comments
 (0)