我试图用来hibernate annotations
向MySQL database
没有定义主键的表中插入数据。
但是事实是该表的两个字段一起在表中是唯一的。我如何使用hibernate注释实现相同的目的?
这是我的代码。
@Entity
@Table(name = "RolesMenuItems")
public class RolesMenuItems {
@Column(name = "RoleID")
private String roleID;
@Column(name = "MenuItemID")
private String menuItemID;
/*setter getter methods */
}
您可以使用@Embeddeble
和@EmbeddedId
创建复合键,并将其与您的实体进行映射。例如:
@Embeddable
public class RolesMenu {
@Column(name = "RoleID")
private String roleID;
@Column(name = "MenuItemID")
private String menuItemID;
//getter, setter methods
}
@Entity
@Table(name = "RolesMenuItems")
public class RolesMenuItems {
@EmbeddedId
private RolesMenu roleMenu;
/*setter getter methods */
}
然后RolesMenuItems
在Java代码中使用常规方式来持久化实体。
参考:http
:
//docs.jboss.org/hibernate/annotations/3.5/reference/en/html_single/#d0e535
编辑: 保留实体:
RolesMenu roleMenu = new RolesMenu();
roleMenu.setRoleID(...);
roleMenu.setMenuItemID(...);
RolesMenuItems roleItem = new RolesMenuItems();
roleItem.setRoleMenu( roleMenu );
em.persist(roleItem);
问题内容: 所以我对数据库中的某些表进行了反向工程,当我尝试将对象保存到数据库中时,出现以下错误: 初始SessionFactory创建失败。org.hibernate.AnnotationException:从com.mycode.Account引用com.mycode.Block的外键具有错误的列数。在线程“ main”中应为2异常java.lang.ExceptionInInitialize
我试图创建一个使用的组合注释,但是我似乎无法使其工作。 这是有效的(使用): 但是,直接使用不起作用(大概是由于只允许在方法上使用): 无法将用作可组合注释吗?
问题内容: 我正在尝试做一些Java注释魔术。我必须说,我仍在追赶注释技巧,并且某些事情对我来说还不太清楚。 所以…我有一些带注释的类,方法和字段。我有一个方法,它使用反射对类进行一些检查并将一些值注入到类中。这一切都很好。 但是,我现在面临的情况是我需要一个注释实例(可以这么说)。所以…批注与常规接口不同,您不能对类进行匿名实现。我知道了。我在这里浏览了有关类似问题的一些帖子,但似乎无法找到所需
我想在Java中生成一个XFDF Stamp注释,它的内部会有一个透明的图像。我很难识别图像存储的格式以及如何将输入图像转换为该格式。 到目前为止我知道 null 我有一个包含图像的XFDF示例,当我解码图像时,我看到了如下语法,但遗憾的是,我不知道 标记中存在什么样的原始数据。 我已经设法在PDFBox的帮助下在PDF中创建了一个带有自定义图像的橡皮图章注释,但遗憾的是PDFBox似乎不支持将这
假设我有以下数据库模式 现在我有了以下JPA映射实体 雇员实体 领土实体: 转码实体: EmployeeTerritoryFunction实体(复合键表) EmployeeTerrityFunction pk 以下样本插入 当我运行上面的代码只有新对象,我没有问题,因为Hibernate自动插入员工,领土和列表employee_territory_function但当我第一次删除所有现有的领土,e
问题内容: 我的项目中有注释驱动的hibernate功能。 现在,我想在列上创建索引。我当前的列定义是 我在这里添加注释 然后删除表并重新启动Tomcat服务器。实例化服务器后,创建了表,但是在以下查询中看不到新索引。 预期用新索引构造表。我在MySQL中使用InnoDB。 问题答案: 有趣的是,在Hibernate配置中,我正在使用。 这修改了一个现有的数据库。我是手动删除该表并重新启动Tomc