如何从字段级别带注释的表生成hibernate域类?我使用了Hibernate Tools项目并从数据库中的表中生成了域类.生成的类在getter方法上有注释,而不是在字段级别.请建议一种方法来生成具有注释字段的域类.在eclipse/IDEA等中是否有任何重构工具可以将注释从方法级别移动到字段级别?
感谢您的帮助和时间.
我有一个JPA/Hibernate数据模型,我使用Hibernate hbm2ddl工具生成数据库DDL.我有一些字符串应该是CHAR,一些字符串可能是数据库中的VARCHAR.我想尽量减少DDL的手工编辑(我意识到有些必须发生).
有谁知道我应该怎么做?我意识到我可以通过被黑客攻击的方言制作所有的Strings VARCHARS或CHARS,但这并不是数据库中总是适用的.
我希望能够使用注释或aop执行此操作,避免在我的类中自定义列定义文本.
谢谢.
如何在Hibernate中禁用延迟加载?我正在使用持久性注释,而不是hbm xml文件.
我通过ID获取单个对象并希望加载所有属性.在使用对象之前会话已关闭.
谢谢!
在Nhibernate中,我们有Fluent Nhibernate,现在,Nhibernate 3.2内置了"按代码映射"功能.两者都允许您以编程方式构造域的映射,我们可以编写一些约定来映射所有域,或者我们可以为每个相应的域对象编写单独的类.
Hibernate有类似的东西吗?
我想使用连接表在两个表之间建立一对多的关系.
这就是我想使用连接表的原因:
最后,我想使用Hibernate注释来执行此操作.
我找到了一些使用xml映射执行此操作的示例,但没有使用注释.
我相信这将是如何创建表格的
CREATE TABLE `PRODUCT` (
`PRODUCT_ID` BIGINT PRIMARY KEY AUTO_INCREMENT
);
CREATE TABLE `PARTS` (
`PART_ID` BIGINT PRIMARY KEY AUTO_INCREMENT
);
-- USER_IMAGE_ID must be unique if we want a one-to-many relationship between PRODUCTS & PARTS tables
CREATE TABLE `USER_DETAILS_IMAGE` (
`PRODUCT_ID` BIGINT,
`PART_ID` BIGINT UNIQUE,
CONSTRAINT `FK_PRODUCT_ID` FOREIGN KEY (`PRODUCT_ID`) REFERENCES `PRODUCT`(`PRODUCT_ID`),
CONSTRAINT `FK_PART_ID` FOREIGN KEY (`PART_ID`) REFERENCES `PARTS`(`PART_ID`)
);
Run Code Online (Sandbox Code Playgroud) 我试过了
@ManyToMany(cascade = CascadeType.ALL)
Map<String, Double> data = new HashMap<String, Double>();
Run Code Online (Sandbox Code Playgroud)
但它会产生错误:
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)
Run Code Online (Sandbox Code Playgroud)
任何的想法?
假设有一个带有结构的User表:
用户
我想只检索当前公司的用户(公司可以由用户通过UI更改,因此公司是运行时参数)
类似地,还有许多其他表与公共列(公司)具有相似的结构,我想将数据限制为仅当前公司,因此我使用hibernate过滤器来过滤数据.
Hibernate注释:
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">Dialect....</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.generate_statistics">true</prop>
<prop key="hibernate.connection.release_mode">after_transaction</prop>
<prop key="hibernate.cache.use_second_level_cache">false</prop>
</props>
</property>
<property name="annotatedClasses">
<list>
<value>User</value>
.....
</list>
</property>
</bean>
Run Code Online (Sandbox Code Playgroud)
过滤器定义:
@org.hibernate.annotations.FilterDef(name="restrictToCurrentCompany",
parameters = {@org.hibernate.annotations.ParamDef(
name = "currentCompanyNumber", type = "int"
)
}
)
@Entity
@Table(name = "USER")
@org.hibernate.annotations.Filter(
name = "restrictToCurrentCompany",
condition="company = :currentCompanyNumber"
)
public class User implements Serializable {
private int company;
private String userName; … 我有一个严重的hibernate问题.我遵循各种书籍和在线教程,但我得到了与HibernateUtil.java线明显抛出相同的异常"ExceptionInInitializerError"
SessionFactory sf = cfg.configure().buildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
我的Tomcat日志说明如下:
Caused by: java.lang.ExceptionInInitializerError
at de.marcelstuht.nerven2.server.HibernateUtil.buildSessionFactory(HibernateUtil.java:23)
at de.marcelstuht.nerven2.server.HibernateUtil.<clinit>(HibernateUtil.java:8)
at de.marcelstuht.nerven2.shared.model.Account.<init>(Account.java:52)
at de.marcelstuht.nerven2.server.GreetingServiceImpl.loginServer(GreetingServiceImpl.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
... 21 more
Caused by: org.hibernate.MappingException: Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
at org.hibernate.persister.internal.PersisterFactoryImpl.create(PersisterFactoryImpl.java:180)
at org.hibernate.persister.internal.PersisterFactoryImpl.createEntityPersister(PersisterFactoryImpl.java:131)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:345)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1737)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1775)
at de.marcelstuht.nerven2.server.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
... 29 more
Caused by: org.hibernate.InstantiationException: could not instantiate test objectde.marcelstuht.nerven2.shared.model.Account
at org.hibernate.engine.internal.UnsavedValueFactory.instantiate(UnsavedValueFactory.java:49)
at org.hibernate.engine.internal.UnsavedValueFactory.getUnsavedIdentifierValue(UnsavedValueFactory.java:68)
at org.hibernate.tuple.PropertyFactory.buildIdentifierProperty(PropertyFactory.java:75)
at org.hibernate.tuple.entity.EntityMetamodel.<init>(EntityMetamodel.java:143)
at org.hibernate.persister.entity.AbstractEntityPersister.<init>(AbstractEntityPersister.java:498)
at org.hibernate.persister.entity.SingleTableEntityPersister.<init>(SingleTableEntityPersister.java:142)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) …Run Code Online (Sandbox Code Playgroud) 我的hibernate模型出现了这个错误,我无法弄清楚是什么问题.
Tag.java:
@Entity
@Table(name = "tag")
public class Tag implements java.io.Serializable {
private Integer idTag;
private String name;
private Set<Question> questions = new HashSet<Question>(0);
@Id
@GeneratedValue(strategy = IDENTITY)
@Column(name = "idtag", unique = true, nullable = false)
public Integer getIdTag() {
return this.idTag;
}
public void setIdTag(Integer idtag) {
this.idTag = idtag;
}
[...]
@OneToMany(fetch = FetchType.LAZY, mappedBy = "tag")
public Set<Question> getQuestions() {
return this.questions;
}
public void setQuestions(Set<Question> questions) {
this.questions = questions;
}
}
Run Code Online (Sandbox Code Playgroud)
Question.java:
@Entity
@Table(name …Run Code Online (Sandbox Code Playgroud) 这是我的注释类,我想userId和groupId列都作为主键.我发现了更多关于此的问题(问题),但未找到相关答案.我的声誉较少,所以我无法评论帖子,所以我在这里提出我的问题.
这是我的代码..
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 getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getGroup() {
return group;
}
public void …Run Code Online (Sandbox Code Playgroud) hibernate ×9
java ×5
jpa ×2
annotations ×1
c# ×1
database ×1
inheritance ×1
mysql ×1
nhibernate ×1
one-to-many ×1
orm ×1
persistence ×1
spring ×1