Я делаю проект для группового чата, который имеет следующие доменные объекты. Я хочу, чтобы orderId CommentPK автоматически увеличивался относительно предоставленного groupId. Если я использую такой метод, как GenerationType.Table, pkColumnName = "max_id_name", pkColumnValue = "max_comment_id", valueColumnName = "max_id", то orderId будет глобально уникальным, что также ограничит максимальное количество комментариев, поддерживаемых системой как ключ "max_comment_id является константой. Вместо этого я хочу использовать pkColumnValue, который может быть получен из предоставленного groupId, например. скажем, для группы 1 ключ - max_comment_group_1, для группы 2 - ключ max_comment_group_2. Я хочу использовать только спецификации JPA для этого, так что я могу дать значение переменной для поля pkColumnValue в @TableGenerator. Но любое решение для спящего режима также подойдет.
@Entity
class Group
{
@Id @GeneratedValue(strategy=GenerationType.IDENTITY)
long id;
String name;
}
@Entity
class User
{
@TableGenerator(
name="max_ids_generator",
table="max_ids",
pkColumnName="max_id_name",
pkColumnValue="max_user_id",
valueColumnName="max_id",
initialValue=1,
allocationSize=1
)
@Id
@GeneratedValue(strategy=GenerationType.TABLE, generator="max_ids_generator")
long id;
long name;
}
@Embeddable
class CommentPK
{
long groupId;
long orderId; // this is the ordering of the comment, Eg. 1st comment, 2nd comment for the provided groupId.
}
@Entity
class Comment
{
@EmbeddedId
CommentPK commentId;
long userId;
String comment;
}
Заранее спасибо.