This surely can't be a bug, but it certainly looks like one!
If I do...

from sqlobject import *
__connection__ = 'sqlite:/:memory:?debug=1'

class Person(SQLObject):
    name = StringCol()
    phoneNumbers = MultipleJoin('PhoneNumber')
   
class PhoneNumber(SQLObject):
    type = StringCol()
    number = StringCol()
    whose = ForeignKey('Person')
   
Person.createTable()
PhoneNumber.createTable()

me = Person(name='me')
PhoneNumber(type='home', number='1234', whose=me)
print me.phoneNumbers

I get...

File "test.py", line 18, in ?
    print me.phoneNumbers
File "<string>", line 1, in <lambda>
File "sqlobject/joins.py", line 131, in performJoin
    inst.id)
...
_sqlite.DatabaseError: no such column: person_id

Shouldn't it be looking for whose_id???
This can't be a bug, surely!?! I mean, someone must have noticed it if it were!
The sql debug stuff is...
 1/Query   :  CREATE TABLE person (
    id INTEGER PRIMARY KEY,
    name TEXT
)
 1/QueryR  :  CREATE TABLE person (
    id INTEGER PRIMARY KEY,
    name TEXT
)
 1/COMMIT  :  auto
 1/Query   :  CREATE TABLE phone_number (
    id INTEGER PRIMARY KEY,
    type TEXT,
    number TEXT,
    whose_id INT
)
 1/QueryR  :  CREATE TABLE phone_number (
    id INTEGER PRIMARY KEY,
    type TEXT,
    number TEXT,
    whose_id INT
)
 1/COMMIT  :  auto
 1/QueryIns:  INSERT INTO person (name) VALUES ('me')
 1/COMMIT  :  auto
 1/QueryOne:  SELECT name FROM person WHERE id = 1
 1/QueryR  :  SELECT name FROM person WHERE id = 1
 1/COMMIT  :  auto
 1/QueryIns:  INSERT INTO phone_number (type, whose_id, number) VALUES ('home', 1, '1234')
 1/COMMIT  :  auto
 1/QueryOne:  SELECT type, number, whose_id FROM phone_number WHERE id = 1
 1/QueryR  :  SELECT type, number, whose_id FROM phone_number WHERE id = 1
 1/COMMIT  :  auto
 1/QueryAll:  SELECT id FROM phone_number WHERE person_id = 1
 1/QueryR  :  SELECT id FROM phone_number WHERE person_id = 1
 1/COMMIT  :  auto

Any ideas?
God bless,
John