I think it would be difficult to enforce, even if we wanted to disallow it, since any non-primitive could be mutable.
What I might do is to change my templates so that certain types, like Date and byte[], are automatically cloned in the setter methods, though. On Mon, Sep 8, 2014 at 8:54 AM, Michael Gentry <mgen...@masslight.net> wrote: > I think everyone is getting wrapped up around Dates. My general question > was about mutable types. > > byte[] data = { 1, 2, 3, 4 }; > person.setData(data); > data[0] = 5; > for (int i = 0; i < person.getData().length; i++) > System.out.println("Data[" + i + "] = " + person.getData()[i]); > > Data[0] = 5 > > Data[1] = 2 > > Data[2] = 3 > > Data[3] = 4 > > Again, modifying the original value changes what is stored internally by > Cayenne. > > Thanks, > > mrg > > > On Mon, Sep 8, 2014 at 3:39 AM, Aristedes Maniatis <a...@maniatis.org> wrote: > >> And https://github.com/ThreeTen/threetenbp for Java 6/7 users. >> >> Ari >> >> >> On 8/09/2014 4:42pm, Andrus Adamchik wrote: >> > Also Java 8 Date and Time if Java 8 is an option: >> > >> > >> http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html >> > >> > Andrus >> > >> > On Sep 8, 2014, at 4:17 AM, John Huss <johnth...@gmail.com> wrote: >> > >> >> Sure, use Joda time. >> >> On Sep 6, 2014 8:15 PM, "Michael Gentry" <mgen...@masslight.net> wrote: >> >> >> >>> Is that a realistic option? >> >>> >> >>> >> >>> On Sat, Sep 6, 2014 at 6:55 PM, John Huss <johnth...@gmail.com> wrote: >> >>> >> >>>> My thoughts are: don't use Date. >> >>>> On Sep 6, 2014 4:58 PM, "Michael Gentry" <mgen...@masslight.net> >> wrote: >> >>>> >> >>>>> Should Cayenne copy/clone mutable objects, such as Date? >> >>>>> >> >>>>> For example, if I modify a date after setting it in a Cayenne object >> >>>>> (person), it modifies the value stored by Cayenne: >> >>>>> >> >>>>> SimpleDateFormat timeFormat = new SimpleDateFormat ("yyyy-MM-dd"); >> >>>>> Date d1 = timeFormat.parse("2014-02-01"); >> >>>>> person.setStartDate(d1); >> >>>>> d1.setYear(2013 - 1900); // Date hackery >> >>>>> System.out.println("Start Date = " + person.getStartDate()); >> >>>>> >> >>>>> This outputs: >> >>>>> >> >>>>> Start Date = Fri Feb 01 00:00:00 EST 2013 >> >>>>> >> >>>>> I've never actually experienced an issue with Cayenne not copying a >> >>>>> Date/etc, but was wondering your thoughts on this. >> >>>>> >> >>>>> Thanks, >> >>>>> >> >>>>> mrg >> >>>>> >> >>>> >> >>> >> > >> >> -- >> --------------------------> >> Aristedes Maniatis >> GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A >>