ad.setValue( "cascade", cascades.toArray( new CascadeType[] {} ) ); ad.setValue( "targetEntity", manyToOne.targetEntity() ); ad.setValue( "fetch", manyToOne.fetch() ); ad.setValue( "optional", manyToOne.optional() );
@Test public void testNoJoins() throws Exception { reader = getReader( Entity1.class, "field1", "many-to-one.orm1.xml" ); assertAnnotationPresent( ManyToOne.class ); assertAnnotationNotPresent( JoinColumn.class ); assertAnnotationNotPresent( JoinColumns.class ); assertAnnotationNotPresent( JoinTable.class ); assertAnnotationNotPresent( Id.class ); assertAnnotationNotPresent( MapsId.class ); assertAnnotationNotPresent( Access.class ); ManyToOne relAnno = reader.getAnnotation( ManyToOne.class ); assertEquals( 0, relAnno.cascade().length ); assertEquals( FetchType.EAGER, relAnno.fetch() ); assertTrue( relAnno.optional() ); assertEquals( void.class, relAnno.targetEntity() ); }
FetchType fetchType; if ( manyToOne != null ) { fetchType = manyToOne.fetch();
@Test public void testAllAttributes() throws Exception { reader = getReader( Entity1.class, "field1", "many-to-one.orm6.xml" ); assertAnnotationPresent( ManyToOne.class ); assertAnnotationNotPresent( JoinColumn.class ); assertAnnotationNotPresent( JoinColumns.class ); assertAnnotationNotPresent( JoinTable.class ); assertAnnotationPresent( Id.class ); assertAnnotationPresent( MapsId.class ); assertAnnotationPresent( Access.class ); ManyToOne relAnno = reader.getAnnotation( ManyToOne.class ); assertEquals( 0, relAnno.cascade().length ); assertEquals( FetchType.LAZY, relAnno.fetch() ); assertFalse( relAnno.optional() ); assertEquals( Entity3.class, relAnno.targetEntity() ); assertEquals( "col1", reader.getAnnotation( MapsId.class ).value() ); assertEquals( AccessType.PROPERTY, reader.getAnnotation( Access.class ) .value() ); }
@Override public void addRelationIntoMetadata(Field relationField, EntityMetadata metadata) { // taking field's type as foreign entity, ignoring "targetEntity" Class<?> targetEntity = relationField.getType(); ManyToOne ann = relationField.getAnnotation(ManyToOne.class); Relation relation = new Relation(relationField, targetEntity, null, ann.fetch(), Arrays.asList(ann.cascade()), ann.optional(), null, // mappedBy is null Relation.ForeignKey.MANY_TO_ONE); boolean isJoinedByFK = relationField.isAnnotationPresent(JoinColumn.class); if (relationField.isAnnotationPresent(AssociationOverride.class)) { AssociationOverride annotation = relationField.getAnnotation(AssociationOverride.class); JoinColumn[] joinColumns = annotation.joinColumns(); relation.setJoinColumnName(joinColumns[0].name()); } else if (isJoinedByFK) { JoinColumn joinColumnAnn = relationField.getAnnotation(JoinColumn.class); relation.setJoinColumnName(StringUtils.isBlank(joinColumnAnn.name()) ? relationField.getName() : joinColumnAnn.name()); } else { relation.setJoinColumnName(relationField.getName()); } relation.setBiDirectionalField(metadata.getEntityClazz()); metadata.addRelation(relationField.getName(), relation); }
private void readManyToOne(ManyToOne propAnn, DeployBeanProperty prop) { DeployBeanPropertyAssocOne<?> beanProp = (DeployBeanPropertyAssocOne<?>) prop; setCascadeTypes(propAnn.cascade(), beanProp.getCascadeInfo()); beanProp.setBeanTable(beanTable(beanProp)); beanProp.setDbInsertable(true); beanProp.setDbUpdateable(true); beanProp.setNullable(propAnn.optional()); beanProp.setFetchType(propAnn.fetch()); }
/** * INTERNAL: (Overridden in XMLManyToOneAccessor) */ public String getFetchType() { return m_manyToOne.fetch().name(); }
NotFound notFound = property.getAnnotation( NotFound.class ); boolean ignoreNotFound = notFound != null && notFound.action().equals( NotFoundAction.IGNORE ); matchIgnoreNotFoundWithFetchType(propertyHolder.getEntityName(), property.getName(), ignoreNotFound, ann.fetch()); OnDelete onDeleteAnn = property.getAnnotation( OnDelete.class ); boolean onDeleteCascade = onDeleteAnn != null && OnDeleteAction.CASCADE.equals( onDeleteAnn.action() );
@Override protected String getFetch(Field field) { return field.getAnnotation(ManyToOne.class).fetch().name(); } @Override
private boolean isLazy() { if ( oneToOne != null ) { return oneToOne.fetch() == FetchType.LAZY; } if ( oneToMany != null ) { return oneToMany.fetch() == FetchType.LAZY; } if ( manyToOne != null ) { return manyToOne.fetch() == FetchType.LAZY; } return false; }
FetchType fetchType; if ( manyToOne != null ) { fetchType = manyToOne.fetch();
/** * @param member * the java member of attribute * @param name * the name of the attribute * @param manyToOne * the annotation * @param parsed * set of annotations parsed * * @since 2.0.0 */ public ManyToOneAttributeMetadataImpl(Member member, String name, ManyToOne manyToOne, Set<Class<? extends Annotation>> parsed) { super(member, name, parsed, manyToOne.targetEntity().getName(), manyToOne.fetch(), manyToOne.cascade()); parsed.add(ManyToOne.class); this.optional = manyToOne.optional(); this.mapsId = this.handleMapsId(member, parsed); this.id = this.handleId(member, parsed); }
/** * @param member * the java member of attribute * @param name * the name of the attribute * @param manyToOne * the annotation * @param parsed * set of annotations parsed * * @since 2.0.0 */ public ManyToOneAttributeMetadataImpl(Member member, String name, ManyToOne manyToOne, Set<Class<? extends Annotation>> parsed) { super(member, name, parsed, manyToOne.targetEntity().getName(), manyToOne.fetch(), manyToOne.cascade()); parsed.add(ManyToOne.class); this.optional = manyToOne.optional(); this.mapsId = this.handleMapsId(member, parsed); this.id = this.handleId(member, parsed); }
private void introspectManyToOne(ManyToOne manyToOne) { Class targetClass = manyToOne.targetEntity(); if (void.class.equals(targetClass)) targetClass = _fieldType; setTargetEntity(targetClass); setCascadeTypes(manyToOne.cascade()); setFetch(manyToOne.fetch()); _isOptional = manyToOne.optional(); }
private void readManyToOne(ManyToOne propAnn, DeployBeanProperty prop) { DeployBeanPropertyAssocOne<?> beanProp = (DeployBeanPropertyAssocOne<?>) prop; setCascadeTypes(propAnn.cascade(), beanProp.getCascadeInfo()); beanProp.setBeanTable(beanTable(beanProp)); beanProp.setDbInsertable(true); beanProp.setDbUpdateable(true); beanProp.setNullable(propAnn.optional()); beanProp.setFetchType(propAnn.fetch()); }
private void readManyToOne(ManyToOne propAnn, DeployBeanProperty prop) { DeployBeanPropertyAssocOne<?> beanProp = (DeployBeanPropertyAssocOne<?>) prop; setCascadeTypes(propAnn.cascade(), beanProp.getCascadeInfo()); BeanTable assoc = factory.getBeanTable(beanProp.getPropertyType()); if (assoc == null) { String msg = errorMsgMissingBeanTable(beanProp.getPropertyType(), prop.getFullBeanName()); throw new RuntimeException(msg); } beanProp.setBeanTable(assoc); beanProp.setDbInsertable(true); beanProp.setDbUpdateable(true); beanProp.setNullable(propAnn.optional()); beanProp.setFetchType(propAnn.fetch()); }
private void readManyToOne(ManyToOne propAnn, DeployBeanProperty prop) { DeployBeanPropertyAssocOne<?> beanProp = (DeployBeanPropertyAssocOne<?>) prop; setCascadeTypes(propAnn.cascade(), beanProp.getCascadeInfo()); BeanTable assoc = factory.getBeanTable(beanProp.getPropertyType()); if (assoc == null) { String msg = errorMsgMissingBeanTable(beanProp.getPropertyType(), prop.getFullBeanName()); throw new RuntimeException(msg); } beanProp.setBeanTable(assoc); beanProp.setDbInsertable(true); beanProp.setDbUpdateable(true); beanProp.setNullable(propAnn.optional()); beanProp.setFetchType(propAnn.fetch()); }
private void readManyToOne(ManyToOne propAnn, DeployBeanProperty prop) { DeployBeanPropertyAssocOne<?> beanProp = (DeployBeanPropertyAssocOne<?>) prop; setCascadeTypes(propAnn.cascade(), beanProp.getCascadeInfo()); BeanTable assoc = factory.getBeanTable(beanProp.getPropertyType()); if (assoc == null) { String msg = errorMsgMissingBeanTable(beanProp.getPropertyType(), prop.getFullBeanName()); throw new RuntimeException(msg); } beanProp.setBeanTable(assoc); beanProp.setDbInsertable(true); beanProp.setDbUpdateable(true); beanProp.setNullable(propAnn.optional()); beanProp.setFetchType(propAnn.fetch()); }
/** * Parse @ManyToOne. */ private void parseManyToOne(FieldMetaData fmd, ManyToOne anno) { if (!JavaTypes.maybePC(fmd.getValue())) throw new MetaDataException(_loc.get("bad-meta-anno", fmd, "ManyToOne")); // don't specifically exclude relation from DFG b/c that will prevent // us from even reading the fk when reading from the primary table, // which is not what most users will want if (anno.fetch() == FetchType.EAGER) fmd.setInDefaultFetchGroup(true); if (!anno.optional()) fmd.setNullValue(FieldMetaData.NULL_EXCEPTION); if (anno.targetEntity() != void.class) fmd.setTypeOverride(anno.targetEntity()); setCascades(fmd, anno.cascade()); }
/** * Parse @ManyToOne. */ private void parseManyToOne(FieldMetaData fmd, ManyToOne anno) { if (!JavaTypes.maybePC(fmd.getValue())) throw new MetaDataException(_loc.get("bad-meta-anno", fmd, "ManyToOne")); // don't specifically exclude relation from DFG b/c that will prevent // us from even reading the fk when reading from the primary table, // which is not what most users will want if (anno.fetch() == FetchType.EAGER) fmd.setInDefaultFetchGroup(true); if (!anno.optional()) fmd.setNullValue(FieldMetaData.NULL_EXCEPTION); if (anno.targetEntity() != void.class) fmd.setTypeOverride(anno.targetEntity()); setCascades(fmd, anno.cascade()); fmd.setAssociationType(FieldMetaData.MANY_TO_ONE); }