Ola,
Estou desenvolvendo um sistema pra controle pessoal con Netbeans e Postgres
fiz a conexão pelo JPA, e estou gerando os formularios pelo "Formulario de amostra mestre/detalhes"
mas na hora de executar o Formulario da erro de persistencia
SEVERE: ERROR: cross-database references are not implemented: "cfp.public.banco" Exception in thread "AWT-EventQueue-0" javax.persistence.PersistenceException: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:637) at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:74) at br.com.cfp.view.BancoView.initComponents(BancoView.java:47) at br.com.cfp.view.BancoView.(BancoView.java:29) at br.com.cfp.view.BancoView$1.run(BancoView.java:293) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209) at java.awt.EventQueue.dispatchEvent(EventQueue.java:461) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149) at java.awt.EventDispatchThread.run(EventDispatchThread.java:110) Caused by: org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:103) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:91) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) at org.hibernate.loader.Loader.doList(Loader.java:2223) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2104) at org.hibernate.loader.Loader.list(Loader.java:2099) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:378) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:338) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:172) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1121) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:79) at org.hibernate.ejb.QueryImpl.getResultList(QueryImpl.java:65) ... 10 more Caused by: org.postgresql.util.PSQLException: ERROR: cross-database references are not implemented: "cfp.public.banco" at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1592) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1327) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:192) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:451) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:350) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:254) at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:186) at org.hibernate.loader.Loader.getResultSet(Loader.java:1787) at org.hibernate.loader.Loader.doQuery(Loader.java:674) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:236) at org.hibernate.loader.Loader.doList(Loader.java:2220) ... 18 more CONSTRUÍDO COM SUCESSO (tempo total: 3 segundos)
Persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="CFPPU" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<class>br.com.cfp.bean.Banco</class>
<properties>
<property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/CFP"/>
<property name="hibernate.connection.driver_class" value="org.postgresql.Driver"/>
<property name="hibernate.connection.password" value="ctx824514"/>
<property name="hibernate.connection.username" value="contauto"/>
</properties>
</persistence-unit>
</persistence>
arquivo bean
package br.com.cfp.bean;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.math.BigInteger;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;
/**
*
* @author Denilson
*/
@Entity
@Table(name = "banco", catalog = "CFP", schema = "public")
@NamedQueries({@NamedQuery(name = "Banco.findAll", query = "SELECT b FROM Banco b"), @NamedQuery(name = "Banco.findByBanCodigo", query = "SELECT b FROM Banco b WHERE b.banCodigo = :banCodigo"), @NamedQuery(name = "Banco.findByBanDescricao", query = "SELECT b FROM Banco b WHERE b.banDescricao = :banDescricao"), @NamedQuery(name = "Banco.findByBanConta", query = "SELECT b FROM Banco b WHERE b.banConta = :banConta"), @NamedQuery(name = "Banco.findByBanSaldoinicial", query = "SELECT b FROM Banco b WHERE b.banSaldoinicial = :banSaldoinicial")})
public class Banco implements Serializable {
@Transient
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@Column(name = "ban_codigo")
private Integer banCodigo;
@Column(name = "ban_descricao")
private String banDescricao;
@Column(name = "ban_conta")
private String banConta;
@Column(name = "ban_saldoinicial")
private BigInteger banSaldoinicial;
public Banco() {
}
public Banco(Integer banCodigo) {
this.banCodigo = banCodigo;
}
public Integer getBanCodigo() {
return banCodigo;
}
public void setBanCodigo(Integer banCodigo) {
Integer oldBanCodigo = this.banCodigo;
this.banCodigo = banCodigo;
changeSupport.firePropertyChange("banCodigo", oldBanCodigo, banCodigo);
}
public String getBanDescricao() {
return banDescricao;
}
public void setBanDescricao(String banDescricao) {
String oldBanDescricao = this.banDescricao;
this.banDescricao = banDescricao;
changeSupport.firePropertyChange("banDescricao", oldBanDescricao, banDescricao);
}
public String getBanConta() {
return banConta;
}
public void setBanConta(String banConta) {
String oldBanConta = this.banConta;
this.banConta = banConta;
changeSupport.firePropertyChange("banConta", oldBanConta, banConta);
}
public BigInteger getBanSaldoinicial() {
return banSaldoinicial;
}
public void setBanSaldoinicial(BigInteger banSaldoinicial) {
BigInteger oldBanSaldoinicial = this.banSaldoinicial;
this.banSaldoinicial = banSaldoinicial;
changeSupport.firePropertyChange("banSaldoinicial", oldBanSaldoinicial, banSaldoinicial);
}
@Override
public int hashCode() {
int hash = 0;
hash += (banCodigo != null ? banCodigo.hashCode() : 0);
return hash;
}
@Override
public boolean equals(Object object) {
// TODO: Warning - this method won't work in the case the id fields are not set
if (!(object instanceof Banco)) {
return false;
}
Banco other = (Banco) object;
if ((this.banCodigo == null && other.banCodigo != null) || (this.banCodigo != null && !this.banCodigo.equals(other.banCodigo))) {
return false;
}
return true;
}
@Override
public String toString() {
return "br.com.cfp.view.Banco[banCodigo=" + banCodigo + "]";
}
public void addPropertyChangeListener(PropertyChangeListener listener) {
changeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
changeSupport.removePropertyChangeListener(listener);
}
}
formulario
package br.com.cfp.view;
import java.awt.EventQueue;
import java.beans.Beans;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.RollbackException;
import javax.swing.JFrame;
import javax.swing.JPanel;
/**
*
* @author Denilson
*/
public class BancoView extends JPanel {
public BancoView() {
initComponents();
if (!Beans.isDesignTime()) {
entityManager.getTransaction().begin();
}
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
entityManager = java.beans.Beans.isDesignTime() ? null : javax.persistence.Persistence.createEntityManagerFactory("CFPPU").createEntityManager();
query = java.beans.Beans.isDesignTime() ? null : entityManager.createQuery("SELECT b FROM Banco b");
list = java.beans.Beans.isDesignTime() ? java.util.Collections.emptyList() : org.jdesktop.observablecollections.ObservableCollections.observableList(query.getResultList());
masterScrollPane = new javax.swing.JScrollPane();
masterTable = new javax.swing.JTable();
banCodigoLabel = new javax.swing.JLabel();
banDescricaoLabel = new javax.swing.JLabel();
banContaLabel = new javax.swing.JLabel();
banSaldoinicialLabel = new javax.swing.JLabel();
banCodigoField = new javax.swing.JTextField();
banDescricaoField = new javax.swing.JTextField();
banContaField = new javax.swing.JTextField();
banSaldoinicialField = new javax.swing.JTextField();
saveButton = new javax.swing.JButton();
refreshButton = new javax.swing.JButton();
newButton = new javax.swing.JButton();
deleteButton = new javax.swing.JButton();
FormListener formListener = new FormListener();
org.jdesktop.swingbinding.JTableBinding jTableBinding = org.jdesktop.swingbinding.SwingBindings.createJTableBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, list, masterTable);
org.jdesktop.swingbinding.JTableBinding.ColumnBinding columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${banCodigo}"));
columnBinding.setColumnName("Ban Codigo");
columnBinding.setColumnClass(Integer.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${banDescricao}"));
columnBinding.setColumnName("Ban Descricao");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${banConta}"));
columnBinding.setColumnName("Ban Conta");
columnBinding.setColumnClass(String.class);
columnBinding = jTableBinding.addColumnBinding(org.jdesktop.beansbinding.ELProperty.create("${banSaldoinicial}"));
columnBinding.setColumnName("Ban Saldoinicial");
columnBinding.setColumnClass(java.math.BigInteger.class);
bindingGroup.addBinding(jTableBinding);
masterScrollPane.setViewportView(masterTable);
banCodigoLabel.setText("Ban Codigo:");
banDescricaoLabel.setText("Ban Descricao:");
banContaLabel.setText("Ban Conta:");
banSaldoinicialLabel.setText("Ban Saldoinicial:");
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.banCodigo}"), banCodigoField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), banCodigoField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.banDescricao}"), banDescricaoField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), banDescricaoField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.banConta}"), banContaField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), banContaField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement.banSaldoinicial}"), banSaldoinicialField, org.jdesktop.beansbinding.BeanProperty.create("text"));
binding.setSourceUnreadableValue(null);
bindingGroup.addBinding(binding);
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), banSaldoinicialField, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
saveButton.setText("Save");
saveButton.addActionListener(formListener);
refreshButton.setText("Refresh");
refreshButton.addActionListener(formListener);
newButton.setText("New");
newButton.addActionListener(formListener);
deleteButton.setText("Delete");
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ, masterTable, org.jdesktop.beansbinding.ELProperty.create("${selectedElement != null}"), deleteButton, org.jdesktop.beansbinding.BeanProperty.create("enabled"));
bindingGroup.addBinding(binding);
deleteButton.addActionListener(formListener);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup()
.add(newButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(deleteButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(refreshButton)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(saveButton)
.addContainerGap())
.add(layout.createSequentialGroup()
.addContainerGap()
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(banCodigoLabel)
.add(banDescricaoLabel)
.add(banContaLabel)
.add(banSaldoinicialLabel))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(banCodigoField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.add(banDescricaoField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.add(banContaField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE)
.add(banSaldoinicialField, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 315, Short.MAX_VALUE))
.addContainerGap())
.add(layout.createSequentialGroup()
.addContainerGap()
.add(masterScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 380, Short.MAX_VALUE)
.addContainerGap())
);
layout.linkSize(new java.awt.Component[] {deleteButton, newButton, refreshButton, saveButton}, org.jdesktop.layout.GroupLayout.HORIZONTAL);
layout.setVerticalGroup(
layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
.add(layout.createSequentialGroup()
.addContainerGap()
.add(masterScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 130, Short.MAX_VALUE)
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(banCodigoLabel)
.add(banCodigoField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(banDescricaoLabel)
.add(banDescricaoField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(banContaLabel)
.add(banContaField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(banSaldoinicialLabel)
.add(banSaldoinicialField, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
.add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
.add(saveButton)
.add(refreshButton)
.add(deleteButton)
.add(newButton))
.addContainerGap())
);
bindingGroup.bind();
}
// Code for dispatching events from components to event handlers.
private class FormListener implements java.awt.event.ActionListener {
FormListener() {}
public void actionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == saveButton) {
BancoView.this.saveButtonActionPerformed(evt);
}
else if (evt.getSource() == refreshButton) {
BancoView.this.refreshButtonActionPerformed(evt);
}
else if (evt.getSource() == newButton) {
BancoView.this.newButtonActionPerformed(evt);
}
else if (evt.getSource() == deleteButton) {
BancoView.this.deleteButtonActionPerformed(evt);
}
}
}// </editor-fold>
@SuppressWarnings("unchecked")
private void refreshButtonActionPerformed(java.awt.event.ActionEvent evt) {
entityManager.getTransaction().rollback();
entityManager.getTransaction().begin();
java.util.Collection data = query.getResultList();
for (Object entity : data) {
entityManager.refresh(entity);
}
list.clear();
list.addAll(data);
}
private void deleteButtonActionPerformed(java.awt.event.ActionEvent evt) {
int[] selected = masterTable.getSelectedRows();
List<br.com.cfp.bean.Banco> toRemove = new ArrayList<br.com.cfp.bean.Banco>(selected.length);
for (int idx=0; idx<selected.length; idx++) {
br.com.cfp.bean.Banco b = list.get(selected[idx]);
toRemove.add(b);
entityManager.remove(b);
}
list.removeAll(toRemove);
}
private void newButtonActionPerformed(java.awt.event.ActionEvent evt) {
br.com.cfp.bean.Banco b = new br.com.cfp.bean.Banco();
entityManager.persist(b);
list.add(b);
int row = list.size()-1;
masterTable.setRowSelectionInterval(row, row);
masterTable.scrollRectToVisible(masterTable.getCellRect(row, 0, true));
}
private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {
try {
entityManager.getTransaction().commit();
entityManager.getTransaction().begin();
} catch (RollbackException rex) {
rex.printStackTrace();
entityManager.getTransaction().begin();
List<br.com.cfp.bean.Banco> merged = new ArrayList<br.com.cfp.bean.Banco>(list.size());
for (br.com.cfp.bean.Banco b : list) {
merged.add(entityManager.merge(b));
}
list.clear();
list.addAll(merged);
}
}
// Variables declaration - do not modify
private javax.swing.JTextField banCodigoField;
private javax.swing.JLabel banCodigoLabel;
private javax.swing.JTextField banContaField;
private javax.swing.JLabel banContaLabel;
private javax.swing.JTextField banDescricaoField;
private javax.swing.JLabel banDescricaoLabel;
private javax.swing.JTextField banSaldoinicialField;
private javax.swing.JLabel banSaldoinicialLabel;
private javax.swing.JButton deleteButton;
private javax.persistence.EntityManager entityManager;
private java.util.List<br.com.cfp.bean.Banco> list;
private javax.swing.JScrollPane masterScrollPane;
private javax.swing.JTable masterTable;
private javax.swing.JButton newButton;
private javax.persistence.Query query;
private javax.swing.JButton refreshButton;
private javax.swing.JButton saveButton;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
JFrame frame = new JFrame();
frame.setContentPane(new BancoView());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
});
}
}
Se alguem puder me ajudar eu agradeço.