is there a way to get the creation date or modification date into an implicitly generated relation table?
so if i have a @ManyToMany List<Other> others;
a relation table like main_entity_others
will be generated with columns: main_identifier
, other_identifier
I would also like to have an additional column creation_date
, how would one achieve that (without explicitly defining the relation table as an entity with two ManyToOne
attributes because then i would need handle the inserts myself…)
You wouldn’t need to handle inserts yourself. You can just cascade all operations to achieve automatic maintenance.
so where do i specify the creation date column?
Create a separate entity and define the column there. When you use @ManyToMany(cascade = ALL)
, you don’t have to take care of about inserts.
So the only option IS to create the explicit entity for the relation table?
That’s what I was trying to avoid
So instead of:
@ManyToMany
List<Other> others
I would have an additional class:
@Entity
// omitted IdClass for this example
class BaseEntityOther {
@ManyToOne
BaseEntity base;
@ManyToOne
Other other;
}
...
@ManyToMany(cascade=ALL)
List<BaseEntityOther> others;
This creates much more overhead and is less intuitive in queries if one is used to the HQL style.
Hibernate ORM has no way of maintaining such a column if you don’t have an entity that defines it. You can of course create a database trigger that maintains such a column.