Thanks Miłosz. Yes, that worked. Guess I was reading the documentation
too rigidly.
But I think I'm going to stick with @PrePersist, @PreUpdate because I
also have a 'created' field which should be set once. I suppose I could
add a constraint or trigger to enforce this but I've got something
working now and I need to move on. Thanks again for the input. I'll note
it for future reference.
On Sun, 2011-10-16 at 14:58 +0200, Miłosz Tylenda wrote:
> Tim,
>
> You can apply @GeneratedValue to a field which is generated by the database
> even if the field is not a primary key. The following did work for me on
> PostgreSQL:
>
> create table gv_test(id bigserial, modified timestamp not null default
> current_timestamp, vvv int)
>
> @Entity
> @Table(name="gv_test")
> public class Message {
> @Id
> @GeneratedValue(strategy=GenerationType.IDENTITY)
> private long id;
> private Integer vvv;
> @GeneratedValue(strategy=GenerationType.IDENTITY)
> private Date modified;
>
> public Message() {
> }
>
> public Message(Integer v) {
> vvv = v;
> }
>
> public long getId() {
> return id;
> }
>
> public void setId(long val) {
> id = val;
> }
>
> public Date getModified() {
> return modified;
> }
>
> public void setModified(Date modified) {
> this.modified = modified;
> }
>
> public Integer getVvv() {
> return vvv;
> }
>
> public void setVvv(Integer vvv) {
> this.vvv = vvv;
> }
> }
>
>
>
> em.getTransaction().begin();
>
> Message m = new Message(60);
> em.persist(m);
> System.out.println(m.getModified());
>
> em.getTransaction().commit();
>
>
> Regards,
> Milosz
>