In attachment.

-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;
    }

}

Reply via email to