public int insert(E entityInstance) throws SQLException {

		//エンティティにシーケンス値をセットする
		selectEntitySequences(entityInstance);

		//SQL生成
		StringBuilder sql = new StringBuilder();

		//INSERT INTO tableName (
		sql.append("INSERT INTO ").append(this.tableName).append(" ( ");

		//VALUES句
		StringBuilder valuesSql = new StringBuilder();

		this.bindValues = new ArrayList<Object>(this.fieldMap.size());	//リスト初期化
		int counter=0;
		for(String fieldName : this.fieldMap.keySet()){
			counter++;

			JdbcColumn jdbcColumn = this.fieldMap.get(fieldName);

			//カラム名指定を追加
			sql.append(jdbcColumn.getDbColumnName());

			if(this.isIgnoreVersion() == false && jdbcColumn.isVersionColumn()){
				String newVersion = this.getNewVersionPgsql();
				try {
					jdbcColumn.getClassField().set(entityInstance, newVersion);
				} catch (IllegalArgumentException e) {
					throw new SimpleJdbcRuntimeException(this.entity, "バージョンカラムフィールド値セット失敗 フィールド名:"+fieldName, e);
				} catch (IllegalAccessException e) {
					throw new SimpleJdbcRuntimeException(this.entity, "バージョンカラムフィールド値セット失敗 フィールド名:"+fieldName, e);
				}
				//バインドパラメータ追加（シーケンス値の場合もSELECTを発行してからそのまま代入するので）
				valuesSql.append("? ");
				this.bindValues.add(newVersion);
			}
			else {
				Object value = null;
				try {
					//フィールドの値をバインド変数配列に追加
					value = jdbcColumn.getValue(entityInstance);
				} catch (IllegalArgumentException e) {
					throw new SimpleJdbcRuntimeException(this.entity, "フィールド値取得失敗 フィールド名:"+fieldName, e);
				} catch (IllegalAccessException e) {
					throw new SimpleJdbcRuntimeException(this.entity, "フィールド値取得失敗 フィールド名:"+fieldName, e);
				}

				if(value == null) {
					//DATE型にNULLをバインドするとPgSqlのJDBCでエラーとなるため。
					valuesSql.append("NULL ");
				}
				else {
					//バインドパラメータ追加（シーケンス値の場合もSELECTを発行してからそのまま代入するので）
					valuesSql.append("? ");
					this.bindValues.add(value);
				}
			}

			if(counter < columnMap.size()){
				valuesSql.append(", ");
				sql.append(", ");
			}
			else {
				valuesSql.append(" ");
				sql.append(" ");
			}
		}

		sql.append(" ) ").append(" VALUES ( ");

		sql.append(valuesSql.toString()).append(" ) ");

		log.debug(sql.toString());

		PreparedStatement pstmt = null;

		try {
			pstmt = dbConnection.prepareStatement(sql.toString());

			//値バインド
			this.bind(pstmt, 1, this.bindValues);

			return pstmt.executeUpdate();
		}
		finally {
			DbResourceUtil.close(pstmt);
		}
	}