Tag: hibernate mapping

在Hibernate的XML配置文件中指定默认值

我正在通过映射配置文件配置Hibernate。 如何将age设置为可空并且默认为null?

@ManyToOne JPA关系可以为null吗?

我有一个表有另一个表的外键(多对一关系)但我希望它可以为空。 像这样的东西: public class SubType() { @Id @GeneratedValue(generator = “system-uuid”) @GenericGenerator(name = “system-uuid”, strategy = “uuid”) private String id; } public class TopUp { @Column(nullable = true) @ManyToOne(optional = false, fetch = FetchType.LAZY) private SubType subType; } 但是@Column(nullable = true)抛出NullPointerException并且说子类型不能为null。 有没有办法让ManyToOne接受null?

如何使用Hibernate定义友谊关系?

我需要有“FriendRequest”和“ListOfFriends”function。类似于facebook,它显示收到的朋友请求的数量和已批准的朋友的数量。 通过“FriendRequest”,我的意思是拥有用户收到的朋友请求列表。 通过“ListOfFriends”,我的意思是拥有用户的朋友列表。 为了实现这一点,我定义了以下类,但是当我尝试使用其用户名检索用户时,将抛出“Stackoverflow”exception消息。 它似乎进入了一个无限循环。 当我从我的toString方法中删除“FriendRequests”和“Friends”时,它会停止抛出exception。 这个问题类似于我要实现的目标,但不同之处在于我不具备单独的Credential类。 会员 @Entity public class Member implements Serializable { @Id @GeneratedValue private long id; @Column(name = “username”, nullable = false, unique = true) private String username; @Column(nullable = false) private String fname; @Column(nullable = false) private String lname; @OneToMany(fetch = FetchType.EAGER, mappedBy = “requester”) private Set friendRequests = new […]

Hibernate单向OneToMany删除违反约束(在父端可选= false?)

我使用Hibernate 3.6,我有这样的东西: @Entity public class Parent { @OnyToMany( fetch = FetchType.LAZY, cascade = { ascadeType.ALL } ) @Cascade( { org.hibernate.annotations.CascadeType.SAVE_UPDATE, org.hibernate.annotations.CascadeType.DELETE ) @JoinColumn( name=”Parent_ID” ) public List getChildren() { return children; } public void setChildren( List children ) { this.children = children; } private transient List children; … } @Entity public class Child { …. […]

如何使用Hibernate检索类的成员对象?

使用以下代码我可以成功检索用户的地址字段,为此,我需要使用Projection定义其所有字段。 想象地址有100个字段,在这种情况下我必须定义所有字段。 我想知道我是否可以返回客户的地址对象而不在Proposition中定义其所有字段? 我知道我可以检索地址的id并使用它来检索它的对象,但我想知道是否有其他方法而不是这个或定义其所有字段。 过冬 ….. Criteria cre = session.createCriteria(User.class, “user”) .createAlias(“user.address”, “addr”); cre.add(Restrictions.eq(“user.id”, ID)); ProjectionList pl = Projections.projectionList(); pl.add(Projections.property(“addr.id”).as(“id”)); pl.add(Projections.property(“addr.unit”).as(“unit”)); ……. cre.setProjection(pl); Address address = (Address) cre.list().get(0); 我也使用了以下内容但它遇到错误(无法解析属性:addr of:com.myProject.User) pl.add(Projections.property(“addr”).as(“address”)); Java的 @Entity public Class User { @Id @GeneratedValue private long id; @OneToOne private Address address; … }

如何在运行时配置JPA表名?

我有一个问题,我只有一个数据库可供使用,但我有多个服务器,我希望他们为每个服务器使用不同的表名。 现在我的class级配置为: @Entity @Table(name=”loader_queue”) class LoaderQueue 我希望能够让dev1服务器指向loader_queue_dev1表,dev2服务器指向loader_queue_dev2表。 有没有一种方法可以使用或不使用注释来做到这一点? 我希望能够有一个单独的构建,然后在运行时使用类似系统属性的东西来更改该表名。

使用Hibernate和JPA映射Map

我尝试以下映射 @ElementCollection private Map doubleValues; 但是当我从这里生成我的模式时(使用mvn hibernate3:hbm2ddl ),我得到以下错误: org.hibernate.MappingException: Could not determine type for: java.util.Map, at table: ImagerAnalysisResult, for columns: [org.hibernate.mapping.Column(doubleValues)] 我已经尝试添加列和类型信息,但我一直得到相同的错误。 另外,我不认为应该给出信息,因为hibernate应该使用generics声明(根据如何映射Map )。 我正在使用hibernate版本3.6.4.Final,我尝试过其他版本 有什么建议么? 谢谢。 编辑:似乎maven hibernate插件已经两年了,依赖于较旧的hibernate版本…为什么这个插件没有被维护? 编辑:命名字段“doubleValues”以确保没有保留名称问题。

Hibernate持久化Map 而不引用另一个表

你能帮我用Hibernate来持久保存字符串的地图吗? 地图值来自客户端并且是随机的,因此我不想为地图的值存储单独的表 例外 引起:org.hibernate.AnnotationException:找不到关联的类:java.lang.String 码 @Entity public class UserConfig { @Id @SequenceGenerator(sequenceName = “CONFIG_SEQ”, name = “ConfigSeq”, allocationSize = 1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = “ConfigSeq”) private Long id; @ElementCollection(targetClass = String.class) @CollectionTable(name = “MAP”) @MapKey(name=”key”) @Column(name=”value”) private Map map; 更新 如果MyEnum是一个未映射的类,你还可以解释如何持久化Map吗?

@ManyToOne和@BatchSize

我在一些旧代码中发现了奇怪的事情(至少对我而言)。 注释@ManyToOne的字段也使用@ManyToOne注释。 我一直认为@BatchSize注释只会影响在类级别或集合( @OneToMany )上注释,并影响迭代时的预取 。 但也许我错了,用@BatchSize注释@BatchSize会影响某些东西。 我在文档中找不到答案。 使用@BatchSize注释@ManyToOne是否有意义?

如何将不同记录的数据添加到单个记录中?

如果没有时间,请看一下这个例子 我有两种类型的用户,临时用户和永久用户。 临时用户使用系统作为访客只需提供他们的名字并使用它,但系统需要跟踪它们。 永久用户是那些已注册且永久的用户。 一旦用户为自己创建永久记录,我需要将用户作为访客时所跟踪的所有信息复制到他的永久记录中。 课程如下, @Entity public class PermUser{ @Id @GeneratedValue private long id; @OneToMany private List Favorites favorites; …. } @Entity public class Favorites { @Id @GeneratedValue private long id; @OneToMany (cascade = CascadeType.ALL) @LazyCollection(LazyCollectionOption.FALSE) private List items; … } @Entity public class FavoriteItems { @Id @GeneratedValue private long id; private int quantity; […]