Обсуждение: [GENERAL] JDBC +CIDR (fwd)
What kind of solution can we offer for this problem? Do we really need to make PGobject extensions for every type? Do we really want to force people to have to create these for all user defined types? Kris Jurka ---------- Forwarded message ---------- Date: Tue, 12 Oct 2004 17:54:41 +0200 From: Johann Robette <jrobette@onyme.com> To: pgsql-sql@postgresql.org Cc: pgsql-general@postgresql.org Subject: [GENERAL] JDBC +CIDR Hi, I've a table containing a CIDR field. I'm using an EJB to create a new record in this table. I don't know how to pass the CIDR value. I tried by String but I get this error : javax.ejb.FinderException: Find failed: java.sql.SQLException: ERROR: operator does not exist: cidr = text So how should I do? Thanks in advance.
Kris Jurka wrote: > What kind of solution can we offer for this problem? Do we really need to > make PGobject extensions for every type? Do we really want to force > people to have to create these for all user defined types? Well, you don't have to create a subclass, I think, if you don't mind doing the parsing in the application: PGobject dummy = new PGobject(); dummy.setType("cidr"); dummy.setValue("192.168.0.0/24"); statement.setObject(1, dummy, Types.OTHER); Alternatively, does setString() + "?::cidr" work? -O
On Fri, 22 Oct 2004, Oliver Jowett wrote: > Kris Jurka wrote: > > What kind of solution can we offer for this problem? Do we really need to > > make PGobject extensions for every type? Do we really want to force > > people to have to create these for all user defined types? > > Well, you don't have to create a subclass, I think, if you don't mind > doing the parsing in the application: Right, for some reason I thought PGobject was abstract. It's still not great to force them to include postgresql specific code in their app, but I don't see a way around it without abandoning the goal of removing the use oid zero. > Alternatively, does setString() + "?::cidr" work? In this case yes, but not in general. The driver types it as text so this really comes out as ?::text::cidr which is different from unknown -> cidr. In this case an explicit cast is available, but this won't be true (by default) of other types. Consider: jurka=# select '(1,2),(3,4)'::text::box; ERROR: cannot cast type text to box Kris Jurka