[
http://opensource.atlassian.com/projects/hibernate/browse/JPA-11?page=com...
]
Panayiotis Karabassis commented on JPA-11:
------------------------------------------
Sorry, the source code got mangled. Here it is again without the quote:
@Entity
public class Entry
{
@Id @GeneratedValue private long identifier;
@ElementCollection
@Column(nullable = false)
private Map<String, String> titles;
@ElementCollection
@Column(nullable = false)
@Lob private Map<String, String> contents;
// Getters and setters, other fields and methods
}
@Lob annotation applies to both key and value of Map
----------------------------------------------------
Key: JPA-11
URL:
http://opensource.atlassian.com/projects/hibernate/browse/JPA-11
Project: Java Persistence API
Issue Type: Bug
Environment: Hibermate 3.6.0.Final
MySQL
Reporter: Panayiotis Karabassis
When using the @Lob annotation on a java.util.Map I find that both the value and key of
the Map are mapped to a BLOB. This is in violation of the JPA 2.0 specification which
states:
{quote}The Lob annotation may be used in conjunction with the Basic annotation or with
the ElementCollection[100] annotation when the element collection value is of basic type.
...
[100] If the element collection is a Map, this applies to the map value.{quote}
To reproduce:
{quote}@Entity
public class Entry
{
@Id @GeneratedValue
private long identifier;
@ElementCollection
@Column(nullable = false)
private Map<String, String> titles;
@ElementCollection
@Column(nullable = false)
@Lob
private Map<String, String> contents;
// Getters and setters, other fields and methods
}{quote}
This produces the following error during schema creation:
{quote}Unsuccessful: create table myblog.Entry_contents (Entry_identifier bigint not
null, contents longtext not null, contents_KEY longtext, primary key (Entry_identifier,
contents_KEY)) type=InnoDB
BLOB/TEXT column 'contents_KEY' used in key specification without a key
length{quote}
Workarounds include defining column type with @MapKeyColumn(columnDefinition =
"...") or using @Embeddable as a wrapper for values. (thanks to axtavt and Sean
Patrick Floyd)
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://opensource.atlassian.com/projects/hibernate/secure/Administrators....
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira