code: private SimpleRelation buildSimpleManyToOneOneToVirtualOne(Entity entity, final Attribute fromAttribute, Entity targetEntity, Attribute targetAttribute) {
          Namer targetNamer = relationUtil.getManyToOneNamer(fromAttribute, targetEntity.getModel());
          Namer inverseNamer = relationUtil.getOneToManyNamer(fromAttribute.getColumnConfig(), entity.getModel());
  
          SimpleRelation m2o = new SimpleManyToOne(inverseNamer, targetNamer, fromAttribute, entity, targetEntity, targetAttribute) {
              @Override
              protected AbstractRelation buildInverse() {
                  AbstractRelation o2vo = new SimpleOneToVirtualOne(getTo(), getFrom(), getToAttribute(), getToEntity(), getFromEntity(), getFromAttribute());
                  OneToManyConfig o2voConfig = fromAttribute.getColumnConfig().getOneToManyConfig();
                  setLabelSingular(o2voConfig, o2vo);
                  configureActions(o2vo, cfg().getDefaultOneToManyConfig(), o2voConfig);
                  return o2vo;
              }
          };
  
          ManyToOneConfig m2oConfig = fromAttribute.getColumnConfig().getManyToOneConfig();
          setLabelSingular(m2oConfig, m2o);
          configureActions(m2o, cfg().getDefaultManyToOneConfig(), m2oConfig);
          return m2o;
      }
docs: ----------------------------------------