The answer is to use immutable data types. Unfortunately that takes some work in Java. Anyway, it's not that difficult to write a Cayenne ExtendedType subclass to allow using custom attribute types that are immutable, if you can find or create an immutable data type that fits your needs. For byte[] you could use ImmutableList in guava:
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/ImmutableList.html On Mon, Sep 8, 2014 at 7: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 > > >