[RESOLVIDO] Erro: Persistir Objetos com JPA

Boa noite,pessoal estou com o problema abaixo em uma aplicação exemplo onde preciso persistir um objeto usando JPA. Apresenta para mim o erro abaixo, alguém já passou por isso?

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Could not retrieve transation read-only status server
Error Code: 0
Call: INSERT INTO funcionario (CPF, CREA, LOGIN, MATRICULA, NOME, SENHA, TIPO_FUNCIONARIO) VALUES (?, ?, ?, ?, ?, ?, ?)
	bind => [7 parameters bound]
Query: InsertObjectQuery(br.epicontrol.Model.Funcionario[ codigo=null ])
	at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:331)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:900)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeNoSelect(DatabaseAccessor.java:962)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:631)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:558)
	at org.eclipse.persistence.internal.sessions.AbstractSession.basicExecuteCall(AbstractSession.java:2002)
	at org.eclipse.persistence.sessions.server.ClientSession.executeCall(ClientSession.java:298)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:242)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.executeCall(DatasourceCallQueryMechanism.java:228)
	at org.eclipse.persistence.internal.queries.DatasourceCallQueryMechanism.insertObject(DatasourceCallQueryMechanism.java:377)
	at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:165)
	at org.eclipse.persistence.internal.queries.StatementQueryMechanism.insertObject(StatementQueryMechanism.java:180)
	at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.insertObjectForWrite(DatabaseQueryMechanism.java:489)
	at org.eclipse.persistence.queries.InsertObjectQuery.executeCommit(InsertObjectQuery.java:80)
	at org.eclipse.persistence.queries.InsertObjectQuery.executeCommitWithChangeSet(InsertObjectQuery.java:90)
	at org.eclipse.persistence.internal.queries.DatabaseQueryMechanism.executeWriteWithChangeSet(DatabaseQueryMechanism.java:301)
	at org.eclipse.persistence.queries.WriteObjectQuery.executeDatabaseQuery(WriteObjectQuery.java:58)
	at org.eclipse.persistence.queries.DatabaseQuery.execute(DatabaseQuery.java:899)
	at org.eclipse.persistence.queries.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:798)
	at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWorkObjectLevelModifyQuery(ObjectLevelModifyQuery.java:108)
	at org.eclipse.persistence.queries.ObjectLevelModifyQuery.executeInUnitOfWork(ObjectLevelModifyQuery.java:85)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2896)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1804)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1786)
	at org.eclipse.persistence.internal.sessions.AbstractSession.executeQuery(AbstractSession.java:1737)
	at org.eclipse.persistence.internal.sessions.CommitManager.commitNewObjectsForClassWithChangeSet(CommitManager.java:226)
	at org.eclipse.persistence.internal.sessions.CommitManager.commitAllObjectsWithChangeSet(CommitManager.java:125)
	at org.eclipse.persistence.internal.sessions.AbstractSession.writeAllObjectsWithChangeSet(AbstractSession.java:4207)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabase(UnitOfWorkImpl.java:1441)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitToDatabaseWithChangeSet(UnitOfWorkImpl.java:1531)
	at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.commitRootUnitOfWork(RepeatableWriteUnitOfWork.java:277)
	at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.commitAndResume(UnitOfWorkImpl.java:1169)
	at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionImpl.commit(EntityTransactionImpl.java:132)
	... 29 more
Caused by: java.sql.SQLException: Could not retrieve transation read-only status server
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:988)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:974)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:919)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:950)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:940)
	at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3900)
	at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3871)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2408)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2375)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2359)
	at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.executeDirectNoSelect(DatabaseAccessor.java:890)
	... 60 more
Caused by: java.sql.SQLException: Unknown system variable 'tx_read_only'
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4120)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4052)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2503)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2664)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2788)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2738)
	at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1617)
	at com.mysql.jdbc.ConnectionImpl.isReadOnly(ConnectionImpl.java:3894)
	... 65 more

Depurando mais um pouco aqui cheguei neste erro: “Exception Description: No transaction is currently active”

vc deve abrir e fechar a transação

Luciano minha tabela de banco;

A minha tabela no banco:

CREATE TABLE FUNCIONARIO(
CODIGO INT NOT NULL AUTO_INCREMENT,
NOME VARCHAR(80) NOT NULL ,
CPF VARCHAR(18) NOT NULL ,
MATRICULA INT NULL DEFAULT NULL ,
CREA VARCHAR(20) NOT NULL ,
LOGIN VARCHAR(30) NULL DEFAULT NULL ,
SENHA VARCHAR(30) NULL DEFAULT NULL ,
TIPO_FUNCIONARIO INT NOT NULL ,
PRIMARY KEY (CODIGO))
ENGINE = InnoDB

Minha classe (gerei via Netbeans), Verifiquei as anotações, o campo auto-incremento (codigo)

@Entity
@Table(name = “funcionario”)
@XmlRootElement
@NamedQueries({
@NamedQuery(name = “Funcionario.findAll”, query = “SELECT f FROM Funcionario f”),
@NamedQuery(name = “Funcionario.findByCodigo”, query = “SELECT f FROM Funcionario f WHERE f.codigo = :codigo”),
@NamedQuery(name = “Funcionario.findByNome”, query = “SELECT f FROM Funcionario f WHERE f.nome = :nome”),
@NamedQuery(name = “Funcionario.findByCpf”, query = “SELECT f FROM Funcionario f WHERE f.cpf = :cpf”),
@NamedQuery(name = “Funcionario.findByMatricula”, query = “SELECT f FROM Funcionario f WHERE f.matricula = :matricula”),
@NamedQuery(name = “Funcionario.findByCrea”, query = “SELECT f FROM Funcionario f WHERE f.crea = :crea”),
@NamedQuery(name = “Funcionario.findByLoginAndPassword”, query = “SELECT f FROM Funcionario f WHERE f.senha = :senha and f.login = :login”), //
@NamedQuery(name = “Funcionario.findByLogin”, query = “SELECT f FROM Funcionario f WHERE f.login = :login”),
@NamedQuery(name = “Funcionario.findBySenha”, query = “SELECT f FROM Funcionario f WHERE f.senha = :senha”),
@NamedQuery(name = “Funcionario.findByTipoFuncionario”, query = “SELECT f FROM Funcionario f WHERE f.tipoFuncionario = :tipoFuncionario”)})
public class Funcionario implements Serializable {

private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "CODIGO")
private Integer codigo;
@Basic(optional = false)
@Column(name = "NOME")
private String nome;
@Basic(optional = false)
@Column(name = "CPF")
private String cpf;
@Column(name = "MATRICULA")
private Integer matricula;
@Basic(optional = false)
@Column(name = "CREA")
private String crea;
@Column(name = "LOGIN")
private String login;
@Column(name = "SENHA")
private String senha;
@Basic(optional = false)
@Column(name = "TIPO_FUNCIONARIO")
private int tipoFuncionario;

… ( get e set)

Classe de persistência

public class Persistencia {

public void persistir(Object object) {
    EntityManagerFactory emf = javax.persistence.Persistence.createEntityManagerFactory("epicontrolPU");
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    try {
        em.persist(object);
        em.getTransaction().commit();
    } catch (Exception e) {
        e.printStackTrace();
        em.getTransaction().rollback();
    } finally {
        em.close();
    }
 }

}

inicializa o EntityManagerFactory e o EntityManager fora do método persistir e coloca o em.getTransaction().begin(); dentro do bloco try catch

Blz, vou testar e assim que puder eu posto aqui.

Chefe, testei aqui e continua com erro.

Onde você está chamando esse método public void persistir(Object object)?

Qual a versão do mysql que você esta usando?
pois á vi em alguns post que a versão 6 está bugada e o recomendado era usar a 5.6.

Dá uma olhada neste post
"http://stackoverflow.com/questions/32717417/sqlexception-could-not-retrieve-transation-read-only-status-server"

Echos, bom dia!

Não sei se o erro estava em algum bug no MySql, mas verifiquei as versões da biblioteca do MySQL e eu estava com duas versões, acertei as dependências e deu certo. Obrigado meus camaradas!