1

I have an issue with querying on Integer properties with datamapper.

Datamapping configuration

class Order
  include DataMapper::Resource
  storage_names[:default] = 'ORDER'

  property :order_id, Integer, :field => 'ORDER_ID', :key => true
  property :order_name, String, :field => 'ORDER_NAME'
  property :order_number, Integer, :field => 'ORDER_NUMBER'
end

In the database I have this record:

Order: 1277 - "Order1277" - 7

If I want to fetch an order I can do things like:

Order.first
Order.last
Order.first(order_name: "Order1277")

It gives me an object I can use. But when I try following I get errors:

Order.first(order_id: 1277)
Order.first(order_number: 7)

The error I get:

 TypeError:
   1277 is not a symbol
 # data_objects/Command.java:261:in `execute_reader'

I am using:

  • jRuby 9.2.20
  • Datamapper 1.2.0

It seems like I can only query on String properties. I tried to cast the integer to a symbol, I don't get an error anymore but no record is found. I even tried to configure the id field as String.

Order.all(order_id: '1277'.to_sym)

I understand that downgrading my jRuby could help, but that is not an option

denBelg
  • 343
  • 1
  • 8
  • 20

0 Answers0