[
http://opensource.atlassian.com/projects/hibernate/browse/ANN-181?page=all ]
Emmanuel Bernard updated ANN-181:
---------------------------------
Fix Version: 3.2.0
PropertyInferredData fails on generic entities
----------------------------------------------
Key: ANN-181
URL:
http://opensource.atlassian.com/projects/hibernate/browse/ANN-181
Project: Hibernate Annotations
Type: Bug
Components: binder
Versions: 3.1beta7
Reporter: Ryan Dewell
Assignee: Paolo "Nusco" Perrotta
Fix For: 3.2.0
Exception is thrown by PropertyInferredData at extractType when handling a generically
typed entity. This problem did not exist in previous versions of PropertyInferredData
where "method.getReturnType()" was used to extract the type instead.
Workaround patch (falls back to original procedure):
--------------------------------
try {
returnedClass = extractType(type);
} catch (Exception e){
returnedClass = method.getReturnType();
}
Example generic entity:
--------------------------------
package com.brightmarket.core.workflow;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import org.hibernate.annotations.Type;
import org.hibernate.validator.NotNull;
import com.brightmarket.core.Model;
@Entity(name="LifecycleHistory")
@Table(name="workflow_lifecycle_history")
public class LifecycleHistory<STATE extends Enum, REASON extends Enum> extends
Model{
private static final long serialVersionUID = -8445979354786791933L;
private STATE previousLifecycle;
private STATE newLifecycle;
private REASON newLifecycleReason;
@Column(name="new_lifecycle")
@NotNull
@Type(type="StringEnum")
public STATE getNewLifecycle() {
return newLifecycle;
}
public void setNewLifecycle(STATE lifecycle) {
this.newLifecycle = lifecycle;
}
@Column(name="new_lifecycle_reason")
@Type(type="StringEnum")
public REASON getNewLifecycleReason() {
return newLifecycleReason;
}
public void setNewLifecycleReason(REASON lifecycle) {
this.newLifecycleReason = lifecycle;
}
// NOTE: this isn't strictly needed because it should be accessible via the date
stamped lifecycle history occuring prior to this entry.
@Column(name="previous_lifecycle")
@Type(type="StringEnum")
public STATE getPreviousLifecycle() {
return previousLifecycle;
}
public void setPreviousLifecycle(STATE previousLifecycle) {
this.previousLifecycle = previousLifecycle;
}
}
--
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