注释类型 Any


  • @Target({METHOD,FIELD})
    @Retention(RUNTIME)
    public @interface Any
    Defines a ToOne-style association pointing to one of several entity types depending on a local discriminator, as opposed to discriminated inheritance where the discriminator is kept as part of the entity hierarchy. For example, if you consider an Order entity containing Payment information where Payment might be of type CashPayment or CreditCardPayment the @Any approach would be to keep that discriminator and matching value on the Order itself. Thought of another way, the "foreign-key" really is made up of the value and discriminator (there is no physical foreign key here as databases do not support this):
        @Entity
        class Order {
            ...
            @Any( metaColumn = @Column( name="payment_type" ) )
            @AnyMetDef(
                    idType = "long"
                    metaValues = {
                            @MetaValue( value="C", targetEntity=CashPayment.class ),
                            @MetaValue( value="CC", targetEntity=CreditCardPayment.class ),
                    }
            )
            pubic Payment getPayment() { ... }
        }
     }
     
    作者:
    Emmanuel Bernard, Steve Ebersole
    另请参阅:
    AnyMetaDef
    • 必需元素概要

      所需元素 
      修饰符和类型 必需的元素 说明
      javax.persistence.Column metaColumn
      Identifies the discriminator column.
    • 可选元素概要

      可选元素 
      修饰符和类型 可选元素 说明
      javax.persistence.FetchType fetch
      Defines whether the value of the field or property should be lazily loaded or must be eagerly fetched.
      String metaDef
      Metadata definition used.
      boolean optional
      Whether the association is optional.
    • 元素详细资料

      • metaColumn

        javax.persistence.Column metaColumn
        Identifies the discriminator column. This column will hold the value that identifies the targeted entity.
      • metaDef

        String metaDef
        Metadata definition used. If defined, should point to a @AnyMetaDef name If not defined, the local (ie in the same field or property) @AnyMetaDef is used
        默认值:
        ""
      • fetch

        javax.persistence.FetchType fetch
        Defines whether the value of the field or property should be lazily loaded or must be eagerly fetched. The EAGER strategy is a requirement on the persistence provider runtime that the value must be eagerly fetched. The LAZY strategy is applied when bytecode enhancement is used. If not specified, defaults to EAGER.
        默认值:
        javax.persistence.FetchType.EAGER
      • optional

        boolean optional
        Whether the association is optional. If set to false then a non-null relationship must always exist.
        默认值:
        true