Erro de persistencia

Ola, senhores.
Estou importando os dados do XML e quando tento inserir no banco de dados retorna o seguinte erro:

JDBCExceptionReporter - Incorrect integer value: ‘¬í’ for column ‘occurrence_site’ at row 1

Debugando o codigo percebo que o valor passado trata- se de um inteiro(‘5’) e nao ‘¬í’

Acredito que este erro esteja relacionado ao mapeamento, veja minhas classes:

package br.com.tecfort.jpa.entities;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.EntityNotFoundException;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.JoinColumns;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.PostLoad;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import br.com.tecfort.occurrence.property.OccurrenceProperty;

/**
 * The persistent class for the occurrence database table.
 * 
 */
@Entity
@Table(name = OccurrenceConstant.OCCURRENCE)
public class Occurrence extends OccurrenceConstant implements Serializable {
    private static final long serialVersionUID = 1L;

    @EmbeddedId
    OccurrencePK id;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = OCCURRENCE_DATE_SCAN)
    private Date occurrenceDateScan;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = OCCURRENCE_DATE_CREATION)
    private Date occurrenceDateCreation;

    @Temporal(TemporalType.DATE)
    @Column(name = OCCURRENCE_DATE_TRT)
    private Date occurrenceDateTrt;

    // bi-directional many-to-one association to Image
    @OneToMany(mappedBy = OCCURRENCE, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Set<Image> images;

    @Lob()
    @Column(name = OCCURRENCE_NOTE)
    private String occurrenceNote;

    @Column(name = OCCURRENCE_STATE, nullable = false)
    private Short occurrenceState;

    @Column(name = OCCURRENCE_TYPE)
    private Long occurrenceType;

    @Column(name = OCCURRENCE_VALUE_ENVELOPE)
    private String occurrenceValueEnvelope;

    @Column(name = OCCURRENCE_TERMINAL_NUMBER)
    private Integer occurrenceTerminalNumber;

    // bi-directional many-to-one association to Account
    @ManyToOne
    @JoinColumn(name = OCCURRENCE_ACCOUNT_ID, nullable = true)
    private Account account;

    // bi-directional many-to-one association to Site
    @ManyToOne
    @JoinColumn(name = OCCURRENCE_AGENCY_SOURCE, nullable = true)
    private Agency occurrenceAgencySource;

    @OneToOne(cascade = CascadeType.DETACH, fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = OCCURRENCE_ID, referencedColumnName = OccurrenceTmpConstant.OCCURRENCE_TMP_ID, insertable = false, updatable = false, nullable=true),
        @JoinColumn(name = OCCURRENCE_SITE, referencedColumnName = OccurrenceTmpConstant.OCCURRENCE_TMP_SITE, insertable = false, updatable = true, nullable=true)
    })
    private OccurrenceTmp occurrenceTmp;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = OCCURRENCE_LOCK_CREATION)
    private Date occurrenceLockCreation;

    @Column(name = OCCURRENCE_AMOUNT)
    private Integer occurrenceAmount;
    
    public Occurrence() {
    }
    
    // this is a workaround as due to the composite key, the occurrence_tmp attribute is not being loaded null. 
    @PostLoad
    public void postLoad(){
        try{
            occurrenceTmp.getId();
        } catch (Exception e) {
            occurrenceTmp = null;
        }
    }

    public Occurrence(Integer occId, Date occDateScan, Date occDateTrt, Set<Image> images, String note, Site site,
            Short occState, Long occType, Account account, Agency occAgencySrc, OccurrenceTmp occTmp, String valueEnvelope, Integer terminalNumber, Integer occurrenceAmount) {
        OccurrencePK occPK = new OccurrencePK();
        if (occId != null)
            occPK.setOccurrenceId(occId);
        if (site != null)
            occPK.setOccurrenceSite(site);
        setId(occPK);
        if (occDateScan != null)
            setOccurrenceDateScan(occDateScan);
        if (occDateTrt != null)
            setOccurrenceDateTrt(occDateTrt);
        if (images != null)
            setImages(images);
        if (note != null)
            setOccurrenceNote(note);
        if (occState != null)
            setOccurrenceState(occState);
        if (occType != null)
            setOccurrenceType(occType);
        if (account != null)
            setAccount(account);
        if (occAgencySrc != null)
            setOccurrenceAgencySource(occAgencySrc);
        if (occTmp != null)
            setOccurrenceTmp(occTmp);
        if (valueEnvelope != null)
            setOccurrenceValueEnvelope(valueEnvelope);
        if (terminalNumber != null)
            setOccurrenceTerminalNumber(terminalNumber);
        if (occurrenceAmount != null)
            setOccurrenceAmount(occurrenceAmount);

    }

    public Integer getOccurrenceAmount() {
		return occurrenceAmount;
	}

	public void setOccurrenceAmount(Integer occurrenceAmount) {
		this.occurrenceAmount = occurrenceAmount;
	}

    public String getOccurrenceValueEnvelope() {
        return occurrenceValueEnvelope;
    }

    public void setOccurrenceValueEnvelope(String occurrenceValueEnvelope) {
        this.occurrenceValueEnvelope = occurrenceValueEnvelope;
    }

    public Integer getOccurrenceTerminalNumber() {
        return occurrenceTerminalNumber;
    }

    public void setOccurrenceTerminalNumber(Integer occurrenceTerminalNumber) {
        this.occurrenceTerminalNumber = occurrenceTerminalNumber;
    }

    public OccurrencePK getId() {
        return id;
    }

    public void setId(OccurrencePK id) {
        this.id = id;
    }

    public Date getOccurrenceDateScan() {
        return this.occurrenceDateScan;
    }

    public void setOccurrenceDateScan(Date occurrenceDateScan) {
        this.occurrenceDateScan = occurrenceDateScan;
    }

    public String getOccurrenceNote() {
        return this.occurrenceNote;
    }

    public void setOccurrenceNote(String occurrenceNote) {
        this.occurrenceNote = occurrenceNote;
    }

    public Short getOccurrenceState() {
        return this.occurrenceState;
    }

    public void setOccurrenceState(Short occurrenceState) {
        this.occurrenceState = occurrenceState;
    }

    public Long getOccurrenceType() {
        return this.occurrenceType;
    }

    public void setOccurrenceType(Long occurrenceType) {
        this.occurrenceType = occurrenceType;
    }

    public Account getAccount() {
        return account;
    }

    public void setAccount(Account account) {
        this.account = account;
    }

    public void setImages(Set<Image> images) {
        this.images = images;
    }

    public Set<Image> getImages() {
        return images;
    }

    public void setOccurrenceAgencySource(Agency occurrenceAgencySource) {
        this.occurrenceAgencySource = occurrenceAgencySource;
    }

    public Agency getOccurrenceAgencySource() {
        return occurrenceAgencySource;
    }

    public void setOccurrenceDateTrt(Date occurrenceDateTrt) {
        this.occurrenceDateTrt = occurrenceDateTrt;
    }

    public Date getOccurrenceDateTrt() {
        return occurrenceDateTrt;
    }

    public void setOccurrenceTmp(OccurrenceTmp occurrenceTmp) {
        this.occurrenceTmp = occurrenceTmp;
    }

    public OccurrenceTmp getOccurrenceTmp() {
        return occurrenceTmp;
    }

    public void setOccurrenceDateCreation(Date occurrenceDateCreation) {
        this.occurrenceDateCreation = occurrenceDateCreation;
    }

    public Date getOccurrenceDateCreation() {
        return occurrenceDateCreation;
    }

    public void setOccurrenceLock(Date occurrenceLockCreation) {
        this.occurrenceLockCreation = occurrenceLockCreation;
    }

    public Date getOccurrenceLock() {
        return occurrenceLockCreation;
    }

    public OccurrenceDel getOccurrenceDel() {
        OccurrenceDelPK occDelPK = new OccurrenceDelPK();
        occDelPK.setOccurrenceId(id.getOccurrenceId());
        occDelPK.setOccurrenceSite(id.getOccurrenceSite());
        OccurrenceDel occDel = new OccurrenceDel();
        occDel.setId(occDelPK);
        occDel.setOccurrenceDelDateCreation(occurrenceDateCreation);
        occDel.setOccurrenceDelDateScan(occurrenceDateScan);
        occDel.setOccurrenceDelDateTrt(occurrenceDateTrt);
        occDel.setOccurrenceDelDateDelete(new Date(System.currentTimeMillis()));
        if (occurrenceTmp != null && occurrenceDateScan!= null ) {
            try{
                occurrenceTmp.getOccurrenceTmpAccountAgency();
                occDel.setOccurrenceDelAccountAgency(occurrenceTmp.getOccurrenceTmpAccountAgency());
                occDel.setOccurrenceDelAccountName(occurrenceTmp.getOccurrenceTmpAccountName());
                occDel.setOccurrenceDelAccountNumber(occurrenceTmp.getOccurrenceTmpAccountNumber());
                occDel.setOccurrenceDelAgencySource(occurrenceTmp.getOccurrenceTmpSrcAgency());
            } catch (EntityNotFoundException e) { 
                System.err.println();}
        } else if (account != null) {
            occDel.setOccurrenceDelAccountAgency(account.getAccountAgency());
            occDel.setOccurrenceDelAccountName(account.getAccountName());
            occDel.setOccurrenceDelAccountNumber(account.getAccountNumber());
        }
        if (occurrenceAgencySource != null) {
            occDel.setOccurrenceDelAgencySource(occurrenceAgencySource.getAgencyCode());
        }
        Set<ImageDel> imageDelSet = new HashSet<ImageDel>();
        ImageDel imageDel;
        for (Image image : images) {
            imageDel = image.getImageDel();
            imageDel.setOccurrenceDel(occDel);
            imageDel.setOccurrenceDelId(occDel.getId().getOccurrenceId());
            imageDelSet.add(imageDel);
        }
        occDel.setImagesDel(imageDelSet);
        occDel.setOccurrenceDelNote(occurrenceNote);
        occDel.setOccurrenceDelState(occurrenceState);
        occDel.setOccurrenceDelType(occurrenceType);
        occDel.setOccurrenceDelValueEnvelope(occurrenceValueEnvelope);
        //        occDel.setOccurrenceDelOccurrenceGroup(occurrenceGroupId);        
        occDel.setOccurrenceDelTerminalNumber(occurrenceTerminalNumber);
        return occDel;
    }

    @Override
    public String toString() {
        StringBuffer ret = new StringBuffer()
        .append(" Ocorr�ncia: ")
        .append(OccurrenceProperty.DATE_HUMAN_FORMAT.format(occurrenceDateTrt))
        .append(" - Ag�ncia Origem: ")
        .append((occurrenceAgencySource != null) ? occurrenceAgencySource.getAgencyCode() : "n/c")
        .append(" - Cliente: ")
        .append((account != null) ? account.getAccountName() : "n/c")
        .append(" - C/C: ")
        .append((account != null) ? Account.getAccountNumber(account.getAccountNumber()) + "-"
                + Account.getAccountDigit(account.getAccountNumber()) : "n/c").append(" - Ag: ")
                .append((account != null) ? account.getAccountAgency() : "n/c");
        return ret.toString();
    }

    public String getStringIdentifier() {
        return String.valueOf(id.getIdentifier());
    }

    public int getIdentifier() {
        return id.getIdentifier();
    }

    public static Integer getOccurrenceId(String occIdentifier) {
        return Integer.parseInt(occIdentifier.substring(1, occIdentifier.length()));
    }

    public static Short getOccurrenceSiteId(String occIdentifier) {
        return Short.parseShort(occIdentifier.substring(0, 1));
    }

    public static Integer getOccurrenceId(Integer occIdentifier) {
        return getOccurrenceId(String.valueOf(occIdentifier));
    }

    public static Short getOccurrenceSiteId(Integer occIdentifier) {
        return getOccurrenceSiteId(String.valueOf(occIdentifier));
    }

}

alguem pode me ajudar?

classe PK

package br.com.tecfort.jpa.entities;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/**
 * The primary key class for the image database table.
 * 
 */
@Embeddable
public class OccurrencePK extends OccurrenceConstant implements Serializable {
    // default serial version id, required for serializable classes.
    private static final long serialVersionUID = 1L;

    @Column(name = OCCURRENCE_ID, unique = true, nullable = false)
    private Integer occurrenceId;

    // bi-directional many-to-one association to Occurrence
//    @ManyToOne
//    @JoinColumn(name = OCCURRENCE_SITE, unique = true, nullable = false)
    @Column(name = OCCURRENCE_SITE, unique = true, nullable = false)
    private Site occurrenceSite;

    public OccurrencePK() {
    }

    public OccurrencePK(int occId, Site site) {
        this.occurrenceId = occId;
        this.occurrenceSite = site;
    }

    public int getOccurrenceId() {
        return occurrenceId;
    }

    public void setOccurrenceId(Integer occurrenceId) {
        this.occurrenceId = occurrenceId;
    }

    public Site getOccurrenceSite() {
        return occurrenceSite;
    }

    public void setOccurrenceSite(Site occurrenceSite) {
        this.occurrenceSite = occurrenceSite;
    }

    public OccurrencePK(Integer imageId, Site imageSite) {
        if (imageId != null)
            setOccurrenceId(imageId);
        if (imageSite != null)
            setOccurrenceSite(imageSite);
    }

    @Override
    public boolean equals(Object other) {
        if (this == other) {
            return true;
        }
        if (!(other instanceof OccurrencePK)) {
            return false;
        }
        OccurrencePK castOther = (OccurrencePK) other;
        return (this.occurrenceId == castOther.occurrenceId)
                && (this.occurrenceSite.getSiteId() == castOther.occurrenceSite.getSiteId());

    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hash = 17;
        hash = hash * prime + this.occurrenceId;
        hash = hash * prime + this.occurrenceSite.getSiteId();

        return hash;
    }

    public int getIdentifier() {
        return Integer.parseInt("" + occurrenceSite.getSiteId() + occurrenceId);
    }
}