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. > >
