Используйте distinct on
, если вы хотите одну строку для идентификатора:
select distint on (id) t.*
from t
order by id, year desc;
One way to accomplish this would be to create a bidirectional association between the parent object (let's call it Parent) and the Event and configure your hibernate mappings such that the relationship is managed by Event.
To accomplish this, your Hibernate mappings would look something like:
<class name="Parent"...>
...
<bag name="events" lazy="true" inverse="true"...>...</bag>
...
</class>
<class name="Event"...>
<many-to-one name="parent">
...
</class>
And your code would look something:
myEvent.setParent(parentObject);
eventDao.save(myEvent);
Hope this helps. Good luck.
Просто вставьте событие.
например:
@Entity
public Document
{
@ManyToOne
Set<Event> events;
public void addEvent( Event event )
{
events.add( event )
}
}
@Entity
public Event
{
@id
private long id;
@OneToMany
private Document doc;
....
}
Вариант, который может читать все события:
document.add( event );
update( document );
Вариант, который не затрагивает коллекцию:
event = new Event();
event.setDocument( document );
insert( event );
Затем, когда вы вызываете document.getEvents (), он также запросит и получит новое событие. Единственная проблема заключается в том, что коллекция уже была прочитана, а затем вы вставляете событие с помощью опции 2. В этом случае getEvents () не будет включать новое событие, поскольку коллекция уже была прочитана.