Package javax.persistence

Examples of javax.persistence.DiscriminatorColumn


      entityType.setJoinedSubClass(true);
      break;
    }

    getInternalDiscriminatorColumnConfig(type, _annotationCfg);
    DiscriminatorColumn discriminatorAnn = (DiscriminatorColumn) _annotationCfg.getAnnotation();
    DiscriminatorColumnConfig discriminatorConfig = _annotationCfg.getDiscriminatorColumnConfig();

    String columnName = null;

    if (discriminatorAnn != null)
      columnName = discriminatorAnn.name();

    if (columnName == null || columnName.equals(""))
      columnName = "DTYPE";

    AmberType columnType = null;
    DiscriminatorType discType = DiscriminatorType.STRING;

    if (discriminatorAnn != null)
      discType = discriminatorAnn.discriminatorType();

    switch (discType) {
    case STRING:
      columnType = StringType.create();
      break;
    case CHAR:
      columnType = PrimitiveCharType.create();
      break;
    case INTEGER:
      columnType = PrimitiveIntType.create();
      break;
    default:
      throw new IllegalStateException();
    }

    AmberTable table = entityType.getTable();

    // jpa/0gg0
    if (table == null)
      return;

    com.caucho.amber.table.AmberColumn column
      = table.createColumn(columnName, columnType);

    if (discriminatorAnn != null) {
//      column.setNotNull(! discriminatorAnn.nullable());

      column.setLength(discriminatorAnn.length());

      if (! "".equals(discriminatorAnn.columnDefinition()))
        column.setSQLType(discriminatorAnn.columnDefinition());
    }
    else {
      column.setNotNull(true);
      column.setLength(10);
    }
View Full Code Here


    entityBinder.setDiscriminatorValue( discriminatorValue );


    // DiscriminatorColumn handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    final DiscriminatorColumn discriminatorColumnAnnotation = clazzToProcess.getAnnotation( DiscriminatorColumn.class );
    if ( !inheritanceState.hasParents() ) {
      // we want to process the discriminator column if either:
      //    1) There is an explicit DiscriminatorColumn annotation && we are not told to ignore them
      //    2) There is not an explicit DiscriminatorColumn annotation && we are told to create them implicitly
      final boolean generateDiscriminatorColumn;
      if ( discriminatorColumnAnnotation != null ) {
        if ( mappings.ignoreExplicitDiscriminatorColumnForJoinedInheritance() ) {
          LOG.debugf( "Ignoring explicit DiscriminatorColumn annotation on ", clazzToProcess.getName() );
          generateDiscriminatorColumn = false;
        }
        else {
          LOG.applyingExplicitDiscriminatorColumnForJoined(
              clazzToProcess.getName(),
              AvailableSettings.IGNORE_EXPLICIT_DISCRIMINATOR_COLUMNS_FOR_JOINED_SUBCLASS
          );
          generateDiscriminatorColumn = true;
        }
      }
      else {
        if ( mappings.useImplicitDiscriminatorColumnForJoinedInheritance() ) {
          LOG.debug( "Applying implicit DiscriminatorColumn using DiscriminatorColumn defaults" );
          generateDiscriminatorColumn = true;
        }
        else {
          LOG.debug( "Ignoring implicit (absent) DiscriminatorColumn" );
          generateDiscriminatorColumn = false;
        }
      }

      if ( generateDiscriminatorColumn ) {
        final DiscriminatorType discriminatorType = discriminatorColumnAnnotation != null
            ? discriminatorColumnAnnotation.discriminatorType()
            : DiscriminatorType.STRING;
        return Ejb3DiscriminatorColumn.buildDiscriminatorColumn(
            discriminatorType,
            discriminatorColumnAnnotation,
            null,
View Full Code Here

    Inheritance ia = (Inheritance) cls.getAnnotation(Inheritance.class);
    if (ia != null) {
      ia.strategy();
    }
    DiscriminatorColumn da = (DiscriminatorColumn) cls.getAnnotation(DiscriminatorColumn.class);
    if (da != null) {
      // lowercase the discriminator column for RawSql and JSON
      info.setDiscriminatorColumn(da.name().toLowerCase());
      DiscriminatorType discriminatorType = da.discriminatorType();
      if (discriminatorType.equals(DiscriminatorType.INTEGER)){
        info.setDiscriminatorType(Types.INTEGER);       
      } else {
        info.setDiscriminatorType(Types.VARCHAR);
      }
      info.setDiscriminatorLength(da.length());
    }

    DiscriminatorValue dv = (DiscriminatorValue) cls.getAnnotation(DiscriminatorValue.class);
    if (dv != null) {
      info.setDiscriminatorValue(dv.value());
View Full Code Here

        void onEntity(
                JpaEntity entity,
                AnnotatedElement element,
                AnnotationProcessorStack context) {

            DiscriminatorColumn annotation = element
                    .getAnnotation(DiscriminatorColumn.class);
            entity.setDiscriminatorColumn(new JpaDiscriminatorColumn(annotation));
        }
View Full Code Here

    protected void handleDaoAttributes(Class<?> clazz) {
        Attribute attr;
        Class<?> current = clazz;
        while (current != null && current.getAnnotation(Entity.class) != null) {
            DiscriminatorColumn column = current.getAnnotation(DiscriminatorColumn.class);
            if (column != null) {
                String columnName = column.name();
                attr = findAttribute(columnName);
                if (attr != null) {
                    attr.setTrue(Attribute.Flag.DaoGenerated);
                    attr.setTrue(Attribute.Flag.Insertable);
                    attr.setTrue(Attribute.Flag.Updatable);
                    attr.setFalse(Attribute.Flag.Nullable);
                    attr.setTrue(Attribute.Flag.DC);
                } else {
                    attr = new Attribute(DbUtil.getTableName(current), column.name());
                    attr.setFalse(Flag.Selectable);
                    attr.setTrue(Flag.Insertable);
                    attr.setTrue(Flag.DaoGenerated);
                    attr.setTrue(Flag.DC);
                    _attributes.add(attr);
                }
                if (column.discriminatorType() == DiscriminatorType.CHAR) {
                    attr.setTrue(Attribute.Flag.CharDT);
                } else if (column.discriminatorType() == DiscriminatorType.STRING) {
                    attr.setTrue(Attribute.Flag.StringDT);
                } else if (column.discriminatorType() == DiscriminatorType.INTEGER) {
                    attr.setTrue(Attribute.Flag.IntegerDT);
                }
            }

            PrimaryKeyJoinColumn[] pkjcs = DbUtil.getPrimaryKeyJoinColumns(current);
View Full Code Here

        for (Class<?> table : _tables) {
            DiscriminatorValue dv = table.getAnnotation(DiscriminatorValue.class);
            if (dv != null) {
                Class<?> parent = table.getSuperclass();
                String tableName = DbUtil.getTableName(parent);
                DiscriminatorColumn dc = parent.getAnnotation(DiscriminatorColumn.class);
                assert(dc != null) : "Parent does not have discrminator column: " + parent.getName();
                sql.append(tableName);
                sql.append(".");
                sql.append(dc.name()).append("=");
                Object value = null;
                if (dc.discriminatorType() == DiscriminatorType.INTEGER) {
                    sql.append(dv.value());
                    value = Integer.parseInt(dv.value());
                } else if (dc.discriminatorType() == DiscriminatorType.CHAR) {
                    sql.append(dv.value());
                    value = dv.value().charAt(0);
                } else if (dc.discriminatorType() == DiscriminatorType.STRING) {
                    String v = dv.value();
                    v = v.substring(0, v.length() < dc.length() ? v.length() : dc.length());
                    sql.append("'").append(v).append("'");
                    value = v;
                }
                values.put(dc.name(), value);
                sql.append(" AND ");
            }
        }

        return new Pair<StringBuilder, Map<String, Object>>(sql, values);
View Full Code Here

        void onEntity(
                JpaEntity entity,
                AnnotatedElement element,
                AnnotationProcessorStack context) {

            DiscriminatorColumn annotation = element
                    .getAnnotation(DiscriminatorColumn.class);
            entity.setDiscriminatorColumn(new JpaDiscriminatorColumn(annotation));
        }
View Full Code Here

      return;
    }
    // TODO not hard-coded
    cfMapDef.setInheritanceType(InheritanceType.SINGLE_TABLE);

    DiscriminatorColumn discriminatorCol = clazz.getAnnotation(DiscriminatorColumn.class);
    if (null != discriminatorCol) {
      cfMapDef.setDiscColumn(discriminatorCol.name());
      cfMapDef.setDiscType(discriminatorCol.discriminatorType());
    }
    else {
      cfMapDef.setDiscType(DiscriminatorType.STRING);
    }
View Full Code Here

   *
   * @param c    The Entity class to be parsed.
   * @param sc  The SpeedoClass under construction.
   */
  private void parseDiscriminatorColumn(Class c, SpeedoClass sc) {
    DiscriminatorColumn a = (DiscriminatorColumn) c.getAnnotation(DiscriminatorColumn.class);
    if (a == null) {
      return;
    }
    if (sc.inheritance == null) {
      // This is a root class in an inheritance hierarchy
      sc.inheritance = new SpeedoInheritance();
      sc.inheritance.clazz = sc;
      sc.inheritance.superClassName = null;
      sc.inheritance.discriminator = new SpeedoDiscriminator();
      String cn = a.name();
      if (cn.equals("")) {
        cn = "TYPE"; // Default name of the discriminator column
      }
      SpeedoNoFieldColumn snofc = new SpeedoNoFieldColumn();
      SpeedoColumn scol = sc.getColumn(cn, true);
      if (scol == null) {
        // There is no existing column: create one
        scol = new SpeedoColumn();
        scol.name = cn;
        scol.allowNull = false;
        if (! a.columnDefinition().equals("")) {
          scol.sqlType = a.columnDefinition();
        }
        scol.length = a.length();
        scol.table = sc.mainTable;
      }
      snofc.column = scol;
      switch (a.discriminatorType()) {
      case STRING:
        snofc.type = Type.getDescriptor(String.class);
        break;
      case CHAR:
        snofc.type = Type.getDescriptor(Character.TYPE);
View Full Code Here

        void onEntity(
                JpaEntity entity,
                AnnotatedElement element,
                AnnotationProcessorStack context) {

            DiscriminatorColumn annotation = element
                    .getAnnotation(DiscriminatorColumn.class);
            entity.setDiscriminatorColumn(new JpaDiscriminatorColumn(annotation));
        }
View Full Code Here

TOP

Related Classes of javax.persistence.DiscriminatorColumn

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.