Tag: hibernate annotations

如何在hibernate实体中更改列名?

我有以下hibernate实体: @Table(name=”tbl_template”) @Entity @Audited public class StatementTemplate { private Long id; @Column(name = “template_name”) private String templateName; … } 我将列名从template_name更改为stmt_name @Column(name = “stmt_name”) private String templateName; 事实certificate,而不是更改列名hibernate添加了另一个名为stmt_name的列,现在我有了template_name以及stmt_name 我有以下hibernate属性设置 update 如何将列从template_name更改为stmt_name?

@Where子句在hibernate join查询中不起作用

我有2个@Where注释实体。 第一个是分类; @Where(clause = “DELETED = ‘0’”) public class Category extends AbstractEntity 它有以下关系; @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = “category”) private Set subCategories = Sets.newHashSet(); 第二个实体是SubCategory; @Where(clause = “DELETED = ‘0’”) public class SubCategory extends AbstractEntity 并包含对应关系; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = “CATEGORY_ID”) private Category category; 每当我打电话给下面的Dao方法; @Query(value = “select distinct category from […]

如何使用Hibernate连接两个表的字段?

我有两个表和相关的Java映射。 CREATE TABLE country ( code VARCHAR(3) PRIMARY KEY NOT NULL, name VARCHAR(100) NOT NULL ); CREATE TABLE user ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, name VARCHAR(100) NOT NULL, country_code VARCHAR(3), FOREIGN KEY ( country_code ) REFERENCES country ( code ) ); 这是我的Java实体。 国家POJO: @Entity @Table(name = “country”) public class Country { @Id […]

如何在字段级别创建元注释?

我有这个带有注释的hibernate类: @Entity public class SimponsFamily{ @Id @TableGenerator(name = ENTITY_ID_GENERATOR, table = ENTITY_ID_GENERATOR_TABLE, pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME, valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME) @GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR) private long id; … } 因为我不会以这种方式注释我的类的每个id字段,所以我尝试创建自定义anotation: @TableGenerator(name = ENTITY_ID_GENERATOR, table = ENTITY_ID_GENERATOR_TABLE, pkColumnName = ENTITY_ID_GENERATOR_TABLE_PK_COLUMN_NAME, valueColumnName = ENTITY_ID_GENERATOR_TABLE_VALUE_COLUMN_NAME) @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface EntityId { @GeneratedValue(strategy = GenerationType.TABLE, generator = ENTITY_ID_GENERATOR) public […]

Hibernate 4注释配置

我正在尝试仅使用带有注释的Hibernate 4和一个hibernate.cfg.xml文件。 我已经制作了自己的注释,并使用reflection将其添加到配置中。 我能够以这种方式使用Hibernate 4,但我的配置是使用不推荐的方法构建的。 final Configuration configuration = new Configuration(); final Reflections reflections = new Reflections(Item.class.getPackage().getName()); final Set<Class> classes = reflections.getTypesAnnotatedWith(Entity.class); for (final Class clazz : classes) { configuration.addAnnotatedClass(clazz); } return configuration.configure().buildSessionFactory(); (不推荐的代码: buildSessionFactory(); )。 即使是hibernate 4文档也显示以这种方式构建配置。 如果我尝试使用新方法( buildSessionFactory(ServiceRegistry) ,我得不到相同的结果,并且看起来很多不必要的代码完全按照已弃用的方法执行。但是,我不想继续使用这种风格,因为我不喜欢使用已弃用的代码。 我的问题是:如何以上述方式从配置文件中正确配置Hibernate 4? 我似乎只是造成错误并面临不必要的困难。

@ManyToOne和@BatchSize

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

HiLo发电机策略不起作用

我是hibernate的新手。 我想要做的是使用@CollectionId为我的Address类生成一个标识符。 我已经使用了Collection接口。 但是,当我使用@GenericGenerator并将策略设置为hilo时,它会抛出exception。 这是我的代码: @Entity @Table(name = “USER_DETAILS”) public class UserDetails { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int userId; private String userName; @ElementCollection @JoinTable(name=”USER_ADDRESS”, joinColumns=@JoinColumn(name=”USER_ID”) ) @GenericGenerator(name = “hilo-gen”, strategy = “hilo”) @CollectionId(columns = { @Column(name=”ADDRESS_ID”) }, generator = “hilo-gen”, type = @Type(type=”long”)) private Collection address = new ArrayList(); public int getUserId() { return […]

如何在hibernate注释类中将两列作为主键

这是我的注释类,我希望userId和groupId列都作为主键。 我发现了更多关于此的问题( 问题 ),但未找到相关答案。 我的声誉较少,所以我无法评论post,所以我在这里提出我的问题。 这是我的代码.. import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; import org.hibernate.annotations.NaturalId; @Entity @Table(name=”user_group”) public class user_group { @Column(name=”serviceProvider”) private String serviceProvider; @Column(name=”enterpriseId”) private String enterpriseId; @Column(name=”department”) private String department; @Column(name=”trunkGroupName”) private String trunkGroupName; @Id @Column(name=”userId”) private String userId; @Column(name=”groupId”) private String group; public String […]

如何映射Map

我试过了 @ManyToMany(cascade = CascadeType.ALL) Map data = new HashMap(); 但它会产生错误: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.company.Klass.data[java.lang.Double] at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1016) at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:567) at org.hibernate.cfg.annotations.MapBinder$1.secondPass(MapBinder.java:80) at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130) at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:296) at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1115) 任何想法?

Java Hibernate映射exception! (无法确定类型:java.util.Map)

我创建了一个名为Movie的课程,其中包括以下字段: @Id @GeneratedValue private Long id; private String name; @ElementCollection(targetClass = String.class) private Map properties; private Double rate; private Integer votersCount; private Date releaseDate; private Integer runtime; @ManyToMany @JoinTable(name = “movie_director”) @IndexColumn(name = “directorIndex”) private List directors; @ManyToMany @JoinTable(name = “movie_writer”) @IndexColumn(name = “writerIndex”) private List writers; @OneToMany @IndexColumn(name = “roleIndex”) private List movieRoles; @ManyToMany […]