Thiago,

A few weeks ago there was a commit of @Replicated annotation. It might be what 
you want. It requires a nightly build of OpenJPA though. Have a look at

http://openjpa.apache.org/builds/latest/docs/javadoc/org/apache/openjpa/persistence/Replicated.html

Regards,
Milosz


> I'm sorry...i told you without make the test! It's true, the GeneratedValue
> works correctly in "Slices", this is Great!
> 
> I have one more question but it's specifically about Slices:
> 
> I have a class that makes the Distribution Rules, and the method "public
> String distribute(Object object, List slices, Object context)"
> always returns a String of one Slice! But if i want to persist a object in
> all databases or two, what can i do?
> 
> Thanks!
> 
> 
> 
> Michael Dick wrote:
> > 
> > Sorry about that, I didn't notice the part about slice.
> > 
> > As I understand it slice uses the "master" slice to get the next value for
> > an autogenerated field. By default the master slice is the first slice
> > listed. The wording in the manual is a little confusing though :
> > 
> > 
> > 
> >> 4.3. openjpa.slice.Master
> >> This plug-in property can be used to identify the name of the master
> >> slice.
> >> Master slice is used when a primary key is to be generated from a
> >> database
> >> sequence.
> >> 
> >> By default the master slice is the first slice in the list of configured
> >> slice names.
> >> Warning
> >> Currently, there is no provision to use sequence from multiple database
> >> slices.
> >> 
> > 
> > I think the warning refers to
> > @GeneratedValue(strategy=GenerationType.SEQUENCE) not generated values in
> > general.
> > 
> > I've run some fairly simple unit tests and it looks like the generated
> > values are working. Have you run into errors when using Slice and
> > GeneratedValues?
> > 
> > -mike
> > 
> > On Tue, Oct 7, 2008 at 9:47 AM, thiago ananias
> > wrote:
> > 
> >>
> >>
> >> I understand you! but...
> >>
> >> I'm using "Slice"(A Distributed Database plugin for OpenJPA) and all
> >> database will have his own table "GeneratedValue" and i need a unique
> >> identifier for all databases at the same time!
> >>
> >> Thanks!
> >>
> >>
> >> Michael Dick wrote:
> >> >
> >> > Hi Thiago,
> >> >
> >> > The class you included will work with all databases. Id will be mapped
> >> to
> >> > an
> >> > INTEGER column, nome will be mapped to a VARCHAR column, and dtInsert
> >> will
> >> > be DATE or TIMESTAMP. The actual mappings are determined by OpenJPAs
> >> > DBDictionary classes - there's one for each database you listed. The
> >> given
> >> > example should work fine with any RDB we support.
> >> >
> >> > It sounds like you're interested in using auto generation for the ID
> >> value
> >> > instead of using System.currentTimeMillis(). You're in luck there as
> >> well.
> >> > OpenJPA supports several methods of auto generation which are discussed
> >> in
> >> > the manual [1].
> >> >
> >> > The most simple way to use an auto generated id field would be this :
> >> > import javax.persistence.GeneratedValue;
> >> >
> >> > @Entity
> >> > @Table(name="produto")
> >> > public class Produto implements Serializable {
> >> >
> >> >    @Id
> >> >    @Column(name="id_produto")
> >> >    @GeneratedValue
> >> >    private int id;
> >> >    . . .
> >> > }
> >> >
> >> > The GeneratedValue annotation causes OpenJPA to create an additional
> >> table
> >> > in the database which stores the last used ID value. Each new entity
> >> you
> >> > persist gets a new ID value which should be unique. This approach is
> >> > generic
> >> > and works on any of the supported databases.
> >> >
> >> > If you can't create a new table in the database then you'll probably
> >> want
> >> > to
> >> > use @GeneratedValue(strategy=GenerationType.IDENTITY) which tells the
> >> > Database to generate the ID value. It should work on most databases but
> >> > I've
> >> > only tried with DB2, MySQL, and Oracle.
> >> >
> >> > Hope this helps,
> >> >
> >> > -mike
> >> >
> >> > [1]
> >> >
> >> http://openjpa.apache.org/builds/latest/docs/manual/manual.html#jpa_overview_meta_gen
> >> >
> >> > On Tue, Oct 7, 2008 at 6:21 AM, thiago ananias
> >> > wrote:
> >> >
> >> >>
> >> >> Hello again!
> >> >>
> >> >> I'm need to make a classe that works in all databases, in the example
> >> of
> >> >> "Slice" the id is generated by "System.currentTimeMillis()"
> >> >>
> >> >> But i don't know if exists other way for map this class for oracle,
> >> >> sqlserver and mysql because there are differents kinds of
> >> ids(sequence,
> >> >> identity, auto). If don't exists a "universal mapping", i was thinking
> >> >> how
> >> >> can i generate a "UUDI" to be the ID of the tables, but how can i
> >> store
> >> >> this
> >> >> value in database? because if i store this value as string the
> >> database
> >> >> will
> >> >> be slow!!
> >> >>
> >> >> How can i make this class "universal" for the databases?
> >> >>
> >> >> @Entity
> >> >> @Table(name="produto")
> >> >> public class Produto implements Serializable {
> >> >>
> >> >>    @Id
> >> >>    @Column(name="id_produto")
> >> >>    private int id;
> >> >>
> >> >>    @Column(name="vc_nome", nullable=false)
> >> >>    private String nome;
> >> >>
> >> >>    @Column(name="dt_insert", nullable=false)
> >> >>    @Temporal(javax.persistence.TemporalType.DATE)
> >> >>    private Date dtInsert;
> >> >>
> >> >>
> >> >> }
> >> >>
> >> >> Thanks!
> >> >>
> >> >> --
> >> >> View this message in context:
> >> >>
> >> http://n2.nabble.com/How-can-i-make-my-classes-work-in-all-databases--tp1303283p1303283.html
> >> >> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> >> >>
> >> >>
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://n2.nabble.com/How-can-i-make-my-classes-work-in-all-databases--tp1303283p1303755.html
> >> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> >>
> >>
> > 
> > 
> 
> -- 
> View this message in context: 
> http://n2.nabble.com/How-can-i-make-my-classes-work-in-all-databases--tp1303283p1306265.html
> Sent from the OpenJPA Users mailing list archive at Nabble.com.
> 
> 

Reply via email to