Tag: hibernate annotations

JPA / Hibernate DDL生成; CHAR与VARCHAR

我有一个JPA / Hibernate数据模型,我使用Hibernate hbm2ddl工具生成数据库DDL。 我有一些字符串应该是CHAR,一些可能是数据库中的VARCHAR。 我想尽量减少DDL的手工编辑(我意识到有些必须发生)。 有谁知道我应该怎么做? 我意识到我可以通过被黑客攻击的方言制作所有的Strings VARCHARS或CHARS,但这并不是数据库中总是适用的。 我希望能够使用注释或aop执行此操作,避免在我的类中自定义列定义文本。 谢谢。

hibernate composite主键包含一个复合外键,如何映射这个

我在那里搜索,没有找到任何类似的话题,所以我发布了一个新问题。 我正在使用现有数据库上的Hibernate。 我们不允许更改表结构和数据。 应用程序正在从数据库中读取数据,并根据某些逻辑迁移到另一个数据存储区。 现在的问题是关于复合PK映射。 例如 表A具有复合PK。 Table A ——– a1 (pk) a2 (pk) a3 (pk) a4 (pk) foo bar ======== 表B也具有复合PK,并且该复合PK的一部分是A的PK,这里也用作FK。 Table B ——– a1 (fk,pk) a2 (fk,pk) a3 (fk,pk) a4 (fk,pk) b1 (pk) b2 (pk) b3 (pk) foo bar ======== 我尝试了几种方法,但没有一种方法可行。 谁能告诉一个有效的Hibernate映射解决方案? 注释风格更好。

如何使用hibernate注释标记外键约束?

我正在尝试使用hibernate注释为我的数据库表编写模型类。 我有两个表,每个表都有一个主键User和Question。 @Entity @Table(name=”USER”) public class User { @Id @Column(name=”user_id”) @GeneratedValue(strategy=GenerationType.AUTO) private Long id; @Column(name=”username”) private String username; // getter and setter } 问题表。 @Entity @Table(name=”QUESTION”) public class Questions extends BaseEntity{ @Id @Column(name=”question_id”) @GeneratedValue(strategy=GenerationType.AUTO) private int id; @Column(name=”question_text”) private String question_text; // getter and setter } 我还有一个表UserAnswer,它有userId和questionId作为上述两个表中的外键。 但我无法找到如何在UserAnswer表中引用这些约束。 @Entity @Table(name=”UserAnswer “) public class UserAnswer { […]

使用Hibernate @Index注释在DB上创建索引

我的项目中有注释驱动的hibernatefunction。 现在我想在列上创建索引。 我目前的列定义是 @NotNull @Column(name = “hash”) private String hash; 我在这里添加@Index注释。 @NotNull @Column(name = “hash”) @Index(name=”hashIndex”) private String hash; 然后DROP TABLE并重启Tomcat服务器。 在实例化服务器之后,会创建表,但我无法在后续查询中看到新索引。 SHOW INDEX FROM tableName 期望用新索引构造表。 我正在使用带有MySQL的InnoDB。

此位置不允许使用注释@Index

当试图从javax.persistence使用@Index注释时,Eclipse给了我这个错误。 我在java.util.Date字段之前使用它,在使用@Entity注释的类中。 之前,我在完全相同的地方使用org.hibernate.annotations.Index并且它很好。 在我将hibernate-core从4.1.9.Final升级到4.3.0.Beta3并将hibernate-commons-annotation从4.0.1升级到4.0.2之后,问题就出现了 。 它说@Index已被弃用并推荐使用javax.persistence 。 我发现的所有文档和示例都将@Index放在了类成员之前。 我错过了什么?

寻找一个不被弃用的会话工厂

我正在处理hibernate,当我打开当前项目时,我发现我的Session-Factory已被弃用: AnnotationConfiguration af = new AnnotationConfiguration(); SessionFactory factory = af.configure().buildSessionFactory(); Session session = factory.openSession(); AnnotationConfiguration现在似乎已经被弃用了……所以我检查了JavaDoc并告诉它它被移动到: org.hibernate.cfg.Configuration 我的代码到目前为止工作得很好,实际上我不想改变它……但是我用Google搜索并发现有人在问自己同样的问题为什么SessionFactory需要更改… http://rgordon.co.uk/博客/ 2012/02/24 /hibernate-请-不要-贬低自己动手/ 该文章来自2012年(所以不是那么古老……)并以这种方式描述所有内容: ServiceRegistryBuilder serviceRegistryBuilder = new ServiceRegistryBuilder(); serviceRegistryBuilder.applySettings(properties); ServiceRegistry serviceRegistry = serviceRegistryBuilder.buildServiceRegistry(); Configuration configuration = new Configuration().addClass(FeedTradePersistable.class); SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry); 我实现了那个。 JavaDoc再次certificate了错误! 已过时。 它指的是: org.hibernate.boot.registry.StandardServiceRegistryBuilder 我再次用Google搜索。 结果不那么令人满意…… 我开始修改代码…… ServiceRegistry serviceRegistry = serviceRegistryBuilder.build(); Configuration configuration = […]

每个实体hibernate两个表

我有一个实体 – User 。 它由User.class描述。 Hibernate为每个实体创建一个表,所以当我调用session.save(user) ,我的数据总是保存到该表中。 现在我需要另一个表用于相同User类型的数据,我只需要将我的实体保存到该表。 数据结构 (类似这样): table users_1_table{ string id; string username; } table users_2_table{ string id; string username; } 使用这个 : session.save(user1,”users_1_table”) session.save(user2,”users_2_table”) 结果我应该在users_1_table有user1在users_1_table user2 。 由于系统限制,我不能将这两个对象放在一个表中。 (即使创建额外的字段也是个坏主意)。 我可以不进行子类化吗? 使用programmaticaly hibernate配置?

Java:Hibernate @OneToOne映射

我试图让Hibernate @OneToOne注释工作,而不是在这里取得多大成功…… 假设我有一个名为status的表,如下所示: +————————————————+ | status | +————————————————+ | id | frn_user_id | frn_content_id | status | +—-+————-+—————-+————+ | 1 | 111 | 0 | “active” | +—-+————-+—————-+————+ | 2 | 0 | 222 | “inactive” | +—-+————-+—————-+————+ 我有一个User实体,如下所示: @Entity @Table(name = “user”) public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = “id”, nullable […]