# Basic mapping

Use a Basic Mapping to map an attribute directly to a database column. Basic mappings may be used only with the following attribute types:

- Java primitive types and wrappers of the primitive types

- `java.lang.String, java.math.BigInteger`

- `java.math.BigDecimal`

- `java.util.Date`

- `java.util.Calendar, java.sql.Date`

- `java.sql.Time`

- `java.sql.Timestamp`

- `byte[]`

- `Byte[]`

- `char[]`

- `Character[]`

- enums

- any other type that implements `Serializable`

To create a basic mapping:

1. In the JPA Structure view, right-click the field to map. Select Map As > Basic. The JPA Details view (for attributes) displays the properties for the selected field.

2. Use this table to complete the remaining fields on the JPA Details view.

   Property | Description | Default
   --- | --- | ---
   Entity Map Hyperlink | Defines this mapping as a Basic Mapping. This corresponds to the `@Basic` annotation. | Basic
   Column | The database column mapped to the entity attribute. See "Column" for details. | By default, the Column is assumed to be named identically to the attribute and always included in the `INSERT` and `UPDATE` statements.
   Table | Name of the database table. |
   Fetch | Defines how data is loaded from the database. See "Fetch Type" for details. Eager Lazy | Eager
   Optional | Specifies if this field is can be null. | Yes
   Temporal | Specifies the type of data. See "Temporal" for details. Date Time Timestamp |
   Lob | Specifies if this is a large objects (BLOB or CLOB). See "Lob" for details. |

Eclipse adds the following annotations to the field:

    @Column(name="<COLUMN_NAME>", table="<COLUMN_TABLE>",
        insertable=<INSERTABLE>, updatable=<UPDATABLE>)
    @Basic(fetch=FetchType.<FETCH_TYPE>, optional = <OPTIONAL>)
    @Temporal(TemporalType.<TEMPORAL>)

Mapping an entity

JPA Structure view
JPA Details view (for attributes)

Understanding OR mappings
Understanding EJB 3.0 Java Persistence API