gpt4 book ai didi

java - Hibernate注解: Two relation types between two entities?

转载 作者:行者123 更新时间:2023-11-29 08:47:45 33 4
gpt4 key购买 nike

我的场景是一个用户表和一个图片表。每个用户可以上传多张图片。每个用户都可以将自己的一张图片设置为自己最喜欢的图片,但这并不影响该图片位于该用户的图片集中。

事实证明,将其映射到 hibernate 是很困难的。我的应用程序有一个屏幕,显示用户所有图片的列表,并显示他们最喜欢哪一张。然而,当应用程序加载图片时,最喜欢的单张图片不会加载。在 Eclipse 中进行调试会显示列表中该特定对象的各种有趣的东西,也许它是一个代理对象。这是显示映射的实体代码:

@Entity
class Account {
@Id
public String username;

/* Originally a Set<Picture>, but wanted ordering */
@OneToMany(cascade=CascadeType.ALL, mappedBy="account")
@OrderBy("uploadtime DESC")
public List<Picture> pictures;

@ManyToOne(fetch = FetchType.LAZY, optional=true)
@LazyToOne(LazyToOneOption.PROXY)
@JoinColumn(name="favourite_picture_id")
public Picture favourite_picture;

/* Sometimes it is useful to get just the id, if possible without loading the entire entity */
@OneToOne(fetch = FetchType.LAZY, optional=true)
@Column(insertable=false, updatable=false)
public String favourite_picture_id;
}

@Entity
public class Picture {
@Id
@GeneratedValue(generator="uuid")
@GenericGenerator(name="uuid", strategy="uuid2")
public String id;

@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="username")
public Account account;

/* This is never used, but I thought this might be required for the mapping? */
@OneToOne(mappedBy="favourite_picture")
public Account account_favourite_picture;


public String mimetype;

public Date uploadtime = new Date();

@Column(length=1024 * 1024 * 4)
public byte[] data;
}

不知道为什么图片列表中最喜欢的图片加载失败。任何建议将不胜感激:D

最佳答案

由于Picture有一个拥有它的特定Account,我很想在Picture类上包含一个名为isFavourite的 boolean 属性。这将大大简化映射。

您可以在 Account 类上提供一个 getFavourite 方法,该方法通过查看图片列表并找到标记为最喜欢的图片来返回最喜欢的图片。

关于java - Hibernate注解: Two relation types between two entities?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12130892/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com