[
https://issues.jboss.org/browse/HIBERNATE-167?page=com.atlassian.jira.plu...
]
nimo stephan updated HIBERNATE-167:
-----------------------------------
Description:
Having this within an Entity class:
{code:java}
public class User {
@Column(name = "test")
private String test;
// this makes trouble (but the taskConverter works as expected)
// only the persisting makes two needless update statements each time a new User is
created
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
}
{code}
where Task is an Enum:
{code:java}
public enum Task{
TASK_START,
TASK_END
}
{code}
and creating a new Entity
{code:java}
User user = new User();
user.setName("test");
// this generates two unnecessary updates:
user.setTasks(Map.of(Task.TASK_START, "hello"));
{code}
creates at first the entity:
{code:java}
/* insert my.User
11:54:43,848 INFO [stdout] */ insert
11:54:43,848 INFO [stdout] into
11:54:43,848 INFO [stdout] user
11:54:43,855 INFO [stdout] (test, tasks)
11:54:43,855 INFO [stdout] values
11:54:43,855 INFO [stdout] (?, ?)
{code}
*and produces afterwards within the same session two entity updates (which are
needless):*
{code:java}
/* update
11:54:44,100 INFO [stdout] my.User*/ update
11:54:44,100 INFO [stdout] user
11:54:44,100 INFO [stdout] set
11:54:44,100 INFO [stdout] tasks=?
11:54:44,100 INFO [stdout] where
11:54:44,100 INFO [stdout] id_user=?
...
11:54:44,157 INFO [stdout] /* update
11:54:44,157 INFO [stdout] my.User */ update
11:54:44,157 INFO [stdout] user
11:54:44,157 INFO [stdout] set
11:54:44,157 INFO [stdout] tasks=?
11:54:44,158 INFO [stdout] where
11:54:44,158 INFO [stdout] id_user=?
{code}
*If I replace this:*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
{code}
*with this (using string instead of enum as key):*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<String, String> tasks;
{code}
then all works AND no two needless update statements are produces.
was:
Having this within an Entity class:
{code:java}
public enum Task{
TASK_START,
TASK_END
}
public class User {
@Column(name = "test")
private String test;
// this makes trouble (but the taskConverter works as expected)
// only the persisting makes two needless update statements each time a new User is
created
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
}
{code}
and creating a new Entity
{code:java}
User user = new User();
user.setName("test");
// this generates two unnecessary updates:
user.setTasks(Map.of(Task.TASK_START, "hello"));
{code}
creates at first the entity:
{code:java}
/* insert my.User
11:54:43,848 INFO [stdout] */ insert
11:54:43,848 INFO [stdout] into
11:54:43,848 INFO [stdout] user
11:54:43,855 INFO [stdout] (test, tasks)
11:54:43,855 INFO [stdout] values
11:54:43,855 INFO [stdout] (?, ?)
{code}
*and produces afterwards within the same session two entity updates (which are
needless):*
{code:java}
/* update
11:54:44,100 INFO [stdout] my.User*/ update
11:54:44,100 INFO [stdout] user
11:54:44,100 INFO [stdout] set
11:54:44,100 INFO [stdout] tasks=?
11:54:44,100 INFO [stdout] where
11:54:44,100 INFO [stdout] id_user=?
...
11:54:44,157 INFO [stdout] /* update
11:54:44,157 INFO [stdout] my.User */ update
11:54:44,157 INFO [stdout] user
11:54:44,157 INFO [stdout] set
11:54:44,157 INFO [stdout] tasks=?
11:54:44,158 INFO [stdout] where
11:54:44,158 INFO [stdout] id_user=?
{code}
*If I replace this:*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
{code}
*with this (using string instead of enum as key):*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<String, String> tasks;
{code}
then all works AND no two needless update statements are produces.
Map with Enum as key value generates two need unnecessary update
statements
---------------------------------------------------------------------------
Key: HIBERNATE-167
URL:
https://issues.jboss.org/browse/HIBERNATE-167
Project: Hibernate Integration
Issue Type: Bug
Environment: hibernate-core (v. 5.4.4.Final)
Reporter: nimo stephan
Assignee: Steve Ebersole
Priority: Major
Labels: hibernate
Having this within an Entity class:
{code:java}
public class User {
@Column(name = "test")
private String test;
// this makes trouble (but the taskConverter works as expected)
// only the persisting makes two needless update statements each time a new User is
created
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
}
{code}
where Task is an Enum:
{code:java}
public enum Task{
TASK_START,
TASK_END
}
{code}
and creating a new Entity
{code:java}
User user = new User();
user.setName("test");
// this generates two unnecessary updates:
user.setTasks(Map.of(Task.TASK_START, "hello"));
{code}
creates at first the entity:
{code:java}
/* insert my.User
11:54:43,848 INFO [stdout] */ insert
11:54:43,848 INFO [stdout] into
11:54:43,848 INFO [stdout] user
11:54:43,855 INFO [stdout] (test, tasks)
11:54:43,855 INFO [stdout] values
11:54:43,855 INFO [stdout] (?, ?)
{code}
*and produces afterwards within the same session two entity updates (which are
needless):*
{code:java}
/* update
11:54:44,100 INFO [stdout] my.User*/ update
11:54:44,100 INFO [stdout] user
11:54:44,100 INFO [stdout] set
11:54:44,100 INFO [stdout] tasks=?
11:54:44,100 INFO [stdout] where
11:54:44,100 INFO [stdout] id_user=?
...
11:54:44,157 INFO [stdout] /* update
11:54:44,157 INFO [stdout] my.User */ update
11:54:44,157 INFO [stdout] user
11:54:44,157 INFO [stdout] set
11:54:44,157 INFO [stdout] tasks=?
11:54:44,158 INFO [stdout] where
11:54:44,158 INFO [stdout] id_user=?
{code}
*If I replace this:*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<Task, String> tasks;
{code}
*with this (using string instead of enum as key):*
{code:java}
@Column(name = "tasks")
@Convert(converter = TasksConverter.class)
private Map<String, String> tasks;
{code}
then all works AND no two needless update statements are produces.
--
This message was sent by Atlassian Jira
(v7.12.1#712002)