Here it is.
-Ognjen
Ignacio Andreu wrote:
Hi Ognjen,
Apache OpenJPA doesn't expect an integer is a problem with Postgres. This
problem happens when you try to stream binary data in a bytea column, for
this reason I used the specific table pg_largeobject and the
LargeObjectManager to manage the binary objects in the streaming LOB
support. Can you send you entity? (is no attached in the e-mail).
Thanks,
2008/9/3 Ognjen Blagojevic <[EMAIL PROTECTED]>
Hi devs,
I have a problem using streams under PostgreSQL 8.1. Fairly simple JPQL
query like this:
select i from Image i
Throws an exception:
<openjpa-1.3.0-SNAPSHOT-runknown nonfatal general error>
org.apache.openjpa.persistence.PersistenceException: Bad value for type int
: \001\002\003\004
at
org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4239)
at
org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4204)
...
Caused by: org.postgresql.util.PSQLException: Pogrešna vrednost za tip int
: \001\002\003\004
at
org.postgresql.jdbc2.AbstractJdbc2ResultSet.toInt(AbstractJdbc2ResultSet.java:2699)
at
org.postgresql.jdbc2.AbstractJdbc2ResultSet.getInt(AbstractJdbc2ResultSet.java:2016)
at
org.apache.openjpa.lib.jdbc.DelegatingResultSet.getInt(DelegatingResultSet.java:134)
at
org.apache.openjpa.jdbc.sql.PostgresDictionary.getLOBStream(PostgresDictionary.java:338)
...
You can find Image.java in the attachment.
Before the exception there was a warning witch foreruns the exception:
16 magazinePu WARN [main] openjpa.MetaData -
"magazine.model.Image.logo" declares a column "logo" whose JDBC type is not
compatible with the expected type "integer".
Column logo is defined as BYTEA in PostgreSQL database, which is I beleive,
correct. It is suspicious why the expected type is integer?
Configuration:
- OpenJPA 1.2.0 / OpenJPA 1.3.0 SNAPSHOT
- Enhancing at Build Time
- PostgreSQL 8.1.11
Regards,
Ognjen
package magazine.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import java.io.InputStream;
import javax.persistence.Lob;
import org.apache.openjpa.persistence.Persistent;
@Entity
public class Image implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="id")
private int id;
@Column(name="name")
private String name;
@Lob
@Persistent
@Column(name="logo")
private InputStream logo;
private static final long serialVersionUID = 1L;
public int getId() {
return this.id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public InputStream getLogo() {
return this.logo;
}
public void setLogo(InputStream logo) {
this.logo = logo;
}
}