标签: jointable

使用额外列映射多对多关联表

我的数据库包含3个表:用户和服务实体具有多对多关系,并与SERVICE_USER表连接,如下所示:

用户 - SERVICE_USER - 服务

SERVICE_USER表包含其他BLOCKED列.

执行此类映射的最佳方法是什么?这些是我的实体类

@Entity
@Table(name = "USERS")
public class User implements java.io.Serializable {

private String userid;
private String email;

@Id
@Column(name = "USERID", unique = true, nullable = false,)
public String getUserid() {
return this.userid;
}

.... some get/set methods
}

@Entity
@Table(name = "SERVICES")
public class CmsService implements java.io.Serializable {
private String serviceCode;

@Id
@Column(name = "SERVICE_CODE", unique = true, nullable = false, length = 100)
public String getServiceCode() {
return this.serviceCode;
}
.... …
Run Code Online (Sandbox Code Playgroud)

mapping many-to-many hibernate jpa jointable

129
推荐指数
2
解决办法
11万
查看次数

生成迁移 - 创建连接表

我已经浏览了许多SOgoogle帖子来生成has many and belongs to many关联的连接表的迁移,没有任何工作.

所有解决方案都生成一个空的迁移文件.

我正在使用rails 3.2.13,我有两张桌子:security_usersassignments.这些是我尝试过的一些事情:

rails generate migration assignments_security_users

rails generate migration create_assignments_security_users

rails generate migration create_assignments_security_users_join_table

rails g migration create_join_table :products, :categories (following the official documentation)

rails generate migration security_users_assignments security_user:belongs_to assignments:belongs_to 
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉如何在两个表之间创建连接表迁移吗?

migration ruby-on-rails jointable ruby-on-rails-3 ruby-on-rails-4

65
推荐指数
3
解决办法
5万
查看次数

学说2:如何处理具有额外列的连接表

如何在Doctrine 2中设置具有额外列的连接表,或与其他属性的多对多关联?

many-to-many properties jointable doctrine-orm

21
推荐指数
1
解决办法
2万
查看次数

用于过滤@OneToMany关联结果的注释

我有两个表之间的父/子关系,以及我的Java类中的相应映射.表大致如下:

A (ref number, stuff varchar2(4000))
B (a_ref number, other number, foo varchar2(200))
Run Code Online (Sandbox Code Playgroud)

和Java代码:

@Entity
class A {
    @Id
    @Column(name = "REF")
    private int ref;

    @OneToMany
    @JoinColumn(name = "A_REF", referencedName = "REF")
    private Set<B> bs;
}

@Entity
class B {
    @Id
    @Column(name = "A_REF")
    private int aRef;

    @Id
    @Column(name = "OTHER")
    private int other;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想在从子表中检索的行上添加一个过滤器.生成的查询如下所示:

select a_ref, other, foo from B where a_ref = ?
Run Code Online (Sandbox Code Playgroud)

我希望它是:

select a_ref, other, foo from B where a_ref = ? and other = …
Run Code Online (Sandbox Code Playgroud)

java hibernate jpa jointable

20
推荐指数
2
解决办法
4万
查看次数

Doctrine 2连接表+额外字段

我有两个表和一个联接表:'staff','classification'和'staff_classification'.在连接表中,我有一个额外的布尔字段:'showclassification'.我的注释如下:

 /**
 * @ManyToMany(targetEntity="Staff", inversedBy="classifications")
 * @JoinTable(name="staff_classifications",
 *  joinColumns={@JoinColumn(name="staffid", referencedColumnName="id")},
 *  inverseJoinColumns={@JoinColumn(name="classificationid", referencedColumnName="id", unique=true)});
 */
Run Code Online (Sandbox Code Playgroud)
  1. 如何将额外字段"showclassifications"添加到连接表?
  2. 如何通过DQL引用该字段?例如,哪些查询可以获得允许显示的所有员工分类?
  3. 我是否将上述注释放在一个类中,将@ManyToMany注释放在另一个类中没有@joinTable?例如@ManyToMany(targetEntity ="Classification")?

field join jointable doctrine-orm

19
推荐指数
1
解决办法
8492
查看次数

通过三重连接表在Person/AddressType中定义多个Address属性

我在这里有一个数据库,其中PERSON- ADDRESS- ADDRESS_TYPE关系由三联接表维护PERSON_ADDRESS.本PERSON- ADDRESS关系实际上是一个一对多的.

PERSON

ID FIRSTNAME LASTNAME
-- --------- --------
1  John      Doe
2  Jane      Doe

ADDRESS

ID STREET               CITY
-- -------------------- -------------
1  Home Street 1        Hometown
2  Office Street 1      Officetown
3  Main Street 1        Maintown
4  Business Building 1  Businesstown

ADDRESS_TYPE

ID NAME
-- ---------------
1  Home Address
2  Office Address

PERSON_ADDRESS

PERSON_ID ADDRESS_TYPE_ID ADDRESS_ID
--------- --------------- ----------
1         1               1
1         2               2
2         1               3 …

jpa map jointable jpa-2.0

12
推荐指数
1
解决办法
896
查看次数

Hibernate:如何在Annotation中的一个连接表中连接三个3个表?

能否帮助我如何使用一个公共连接表连接三个表?我有USER,APPLICATION和ROLE表.我希望将他们的ID加入名为USER_APP_ROLE(user.ID,application.ID,role.ID)的表中.

当我删除Join Many to Many中的Application或Role表时,我的代码正在运行.

我做了以下代码:

User.java

@ManyToMany (targetEntity=Role.class)
@JoinTable(name="USER_APPLICATION_ROLE",
    joinColumns=@JoinColumn(name="USER_ID"),
    inverseJoinColumns=@JoinColumn(name="ROLE_ID"))

private Collection<Role> roles;

@ManyToMany (targetEntity=Application.class)
@JoinTable(name="USER_APPLICATION_ROLE",
    joinColumns=@JoinColumn(name="USER_ID"),
    inverseJoinColumns=@JoinColumn(name="APPLICATION_ID"))
private Collection<Application> applications;
Run Code Online (Sandbox Code Playgroud)

Role.java

@ManyToMany(mappedBy="roles", targetEntity=User.class)
private Collection<User> users = new ArrayList<User>();
Run Code Online (Sandbox Code Playgroud)

Application.java

@ManyToMany(mappedBy="applications", targetEntity=User.class)
private Collection<User> users = new ArrayList<User>();
Run Code Online (Sandbox Code Playgroud)

当我尝试运行以下测试时:

    user.getRoles().add(role1);
    user.getRoles().add(role2);

    role1.getUsers().add(user);
    role1.getUsers().add(user);

    role2.getUsers().add(user);
    role2.getUsers().add(user);

    user.getApplications().add(app1);
    user.getApplications().add(app2);

    app1.getUsers().add(user);
    app2.getUsers().add(user);
      ......

      session.beginTransaction();
      session.save(user);
      session.save(role1);
      session.save(role2);
      session.save(app1);
      session.save(app2);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Hibernate: select seq_cm_user.nextval from dual
Hibernate: select seq_role.nextval from dual
Hibernate: select seq_role.nextval from dual
Hibernate: select seq_application.nextval from dual …
Run Code Online (Sandbox Code Playgroud)

many-to-many hibernate jointable

12
推荐指数
1
解决办法
2万
查看次数

为什么我在Rails 4中获得连接表的未知主键例外?

这些是我的模特:

class Product
  has_many :line_items
  has_many :orders, :through => :line_items
end

class LineItem 
  belongs_to :order
  belongs_to :product
end

class Order
    has_many :line_items
    has_many :products, :through => :line_items
end
Run Code Online (Sandbox Code Playgroud)

来自schema.rb:

  create_table "line_items", id: false, force: true do |t|
    t.integer  "order_id"
    t.integer  "product_id"
    t.integer  "quantity"
    t.datetime "created_at"
    t.datetime "updated_at"
  end
Run Code Online (Sandbox Code Playgroud)

我刚刚升级到Rails 4,我的连接表停止工作.如果我这样做@order.line_items,它会抛出异常"模型LineItem中表line_items的未知主键".@order.products按预期工作.

我已经尝试删除并重新创建line_items表,我已经尝试安装protected_attributes gem,但没有任何改变.

这是痕迹.

activerecord ruby-on-rails exception jointable ruby-on-rails-4

12
推荐指数
2
解决办法
8521
查看次数

GORM多对多映射,可与其他字段连接

我正在使用遗留数据库,并且与一个连接表有多对多的关联,我已经在很大程度上解决了映射工作正常.但是还有一个列,如果是Book,作者模型可以说nm_author_books包含一个名为'royalty'的字段.问题是如何从任何方向访问此字段?

class Book {
    String title
    static belongsTo = Author
    static hasMany = [authors: Author]
    static mapping = { authors joinTable: [name: "mm_author_books", key: 'mm_book_id' ] } 
}
class Author {
    String name
    static hasMany = [books: Book]
    static mapping = { books joinTable: [name: "mm_author_books", key: 'mm_author_id'] } 
}
Run Code Online (Sandbox Code Playgroud)

如果nm_author_book表具有[nm_book_id,nm_author_id,royalty],访问版税的方式是什么?

grails many-to-many grails-orm jointable

10
推荐指数
2
解决办法
5200
查看次数

具有2种不同连接条件的Ruby查询

我想查找具有特定LanguagesUsers记录的所有用户.目前我正在尝试查询连接表,LanguagesUsers用于用户具有2个相应的languages_id和级别的所有实例

要找到只有一个关联的位置,这有效:

User.joins(:languages_users).where(languages_users: {language_id: 2, level: 5})
Run Code Online (Sandbox Code Playgroud)

如何在查询中包含2个languages_users,它们是真的?(例如,我想language_id: 2 level: 1language_id: 3 level: 5)

我试过这个,但它返回一个错误:

User.joins(:languages_users).where(languages_users: {language_id: 2, level: 5} AND languages_users: {language_id: 1, level: 3})
Run Code Online (Sandbox Code Playgroud)

这个返回一个空数组,即使肯定有2个languages_users符合此条件的用户:

User.joins(:languages_users).where(languages_users: {language_id: 2, level: 5}).where(languages_users: {language_id: 1, level: 3})
Run Code Online (Sandbox Code Playgroud)

这是什么格式?谢谢!!

更新:LanugagesUser是语言和用户之间的连接表,具有language_id,level,user_id

gem 'sqlite3', group: :development
group :production do
    gem 'pg'
    gem 'rails_12factor'
end
Run Code Online (Sandbox Code Playgroud)

更新2:由于两个答案都提出了一个或一个陈述,我认为我没有正确地传达这个事实:

两个记录很多.例如.我想知道用户有什么语言用户(language_id:1,级别:5)和LanguagesUser(language_id:2,级别:1)

ruby mysql ruby-on-rails jointable

10
推荐指数
1
解决办法
458
查看次数