Nicolas,

I'm geting a bit cold feet on our initial implementation. We have decided to 
use Coordinates as the placeholder of lat and long. Coordinates is an Hibernate 
Search interface. Reading the draft of your doc and as an app developer, I 
don't find it too attractive to have to use this interface in my domain model.
I'm wondering if we should rather do as Karel suggested: support the "free 
form" and wait for Hibernate Spatial types to introduce such a concept.

That means we need to find a way to tag the lat / long getters

## Option 1

```
@Spatial(
    field="coordinates", 
    latitude="latitude", //property name
    longitude="longitude",
    method=QUAD
)
public class Restaurant {
    public double getLatitude() { ... }
    public double getLongitude() { ... }
}
```

### Embedded objects

```
@Spatial(
    field="coordinates", 
    latitude="place.latitude", //property name
    longitude="place.longitude",
    method=QUAD
)
public class Restaurant {
    public Place getPlace {} { ... }

}

//user defined
public class Place {
    public double getLatitude() { ... }
    public double getLongitude() { ... }
}
```

```
public class Restaurant {
   @Spatial(
        field="coordinates", 
        latitude="latitude", //property name
        longitude="longitude",
        method=QUAD
    )
    public Place getPlace {} { ... }

}

//user defined
public class Place {
    public double getLatitude() { ... }
    public double getLongitude() { ... }
}
```


## Option 2

```
@Spatial(
    field="coordinates", 
    method=QUAD
)
public class Restaurant {
    @Latitude(for="coordinates")
    public double getLatitude() { ... }

    @Longitude(for="coordinates")
    public double getLongitude() { ... }
}
```

### Embedded objects

```
@Spatial(
    field="coordinates", 
    method=QUAD
)
public class Restaurant {
    public Place getPlace {} { ... }

}

//user defined
public class Place {
    @Latitude(for="coordinates")
    public double getLatitude() { ... }
    @Longitude(for="coordinates")
    public double getLongitude() { ... }
}
```

## Opinion

I am not thrilled by what I am proposing, esp since they involve String as the 
link in our metadata. If someone has something better, go ahead.
Otherwise, I think I like option 1 better for a few reasons:

- easier to implement
- easier to read
- supports nicely embedded objects
- does not force the embedded object to be annotated (limit of reuse?)\\

what do you all think?
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to