Hibernate version: 3.3.1
Hallo Zusammen,
ich habe zwei Objekte mit einer 1 zu 1 Beziehung, die sich beide den Primary Key des ersten Objectes teilen:
ProductMeta --> ProductBasic
Obwohl die Beziehung als "
lazy" und "
optional=false" definiert ist werden beim Laden (sowohl JPA-QL als auch SQL propiert) der ProductMetas auch die ProductBasics
mitgeladen - habe auch nach längerem Googeln keine Idee was hier falsch läuft ...??
Hat jemand 'ne Idee oder zumindest einen guten Workaround (ausser die Beziehung zu Fuß zu verwalten :-) ??
Die Klassen:
Code:
@MappedSuperclass
@Table(name="fri_product_meta")
@SequenceGenerator(
sequenceName = "seq_product_meta"
, name = "seq_pm"
, allocationSize = 1
, initialValue = 1)
public class ProductMeta{
protected Long id;
protected Date version;
private ProductBasic productBasic;
@Id
@GeneratedValue(generator="seq_pm", strategy=GenerationType.AUTO)
@Column(name = "oid", nullable = false, insertable = true, updatable = false)
public Long getId() {
return id;
}
@Version
@Column(name="optlock")
public Date getVersion() {
return version;
}
@OneToOne(cascade=CascadeType.ALL, optional=false,fetch=FetchType.LAZY)
@PrimaryKeyJoinColumn
public ProductBasic getProductBasic() {
return productBasic;
}
}
@Entity
@Table(name="fri_product_basic")
public class ProductBasic{
private Long id;
private ProductMeta productMeta;
@Id @GeneratedValue(generator = "oneToOneGenerator")
@org.hibernate.annotations.GenericGenerator( name = "oneToOneGenerator"
, strategy = "foreign"
, parameters = @Parameter(name="property", value="productMeta"))
@Column(name="oid_pm")
public Long getId() {
return id;
}
@OneToOne(mappedBy="productBasic", fetch=FetchType.LAZY)
public ProductMeta getProductMeta() {
return productMeta;
}
[/code]