Extra column being created when I use same column name for two different tables connected through ManyToOne...
up vote
0
down vote
favorite
I have SpringBoot project with Spring Data. Extra column being created when I use the same column name for 2 tables mapped using ManyToOne Relation. I have Address table with column name 'id' and AddressType table with column 'id'. When I start the Spring Boot application with this, I see an extra column (address_id) created on Address table.
Address.java
package com.springtesting.model;
import lombok.Data;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address")
public class Address
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "street_name")
private String streetName;
@Column(name = "apartment")
private String apartment;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@Column(name = "zip_code")
private String zipCode;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_type_id")
private AddressType addressType;
public Address()
{
}
public Address(String streetName, String apartment, String city, String state, String country, String zipCode, AddressType addressType)
{
this.streetName = streetName;
this.apartment = apartment;
this.city = city;
this.state = state;
this.country = country;
this.zipCode = zipCode;
this.addressType = addressType;
}
}
and
AddressType.java
package com.springtesting.model;
import lombok.Data;
import lombok.NonNull;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address_type")
public class AddressType
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "type")
@NonNull
private String type;
public AddressType()
{
}
public AddressType(String type)
{
}
}
when I start the Spring Boot application, I see extra column (address_id)
Table Structure on Mysql
java spring spring-data-jpa spring-data
add a comment |
up vote
0
down vote
favorite
I have SpringBoot project with Spring Data. Extra column being created when I use the same column name for 2 tables mapped using ManyToOne Relation. I have Address table with column name 'id' and AddressType table with column 'id'. When I start the Spring Boot application with this, I see an extra column (address_id) created on Address table.
Address.java
package com.springtesting.model;
import lombok.Data;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address")
public class Address
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "street_name")
private String streetName;
@Column(name = "apartment")
private String apartment;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@Column(name = "zip_code")
private String zipCode;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_type_id")
private AddressType addressType;
public Address()
{
}
public Address(String streetName, String apartment, String city, String state, String country, String zipCode, AddressType addressType)
{
this.streetName = streetName;
this.apartment = apartment;
this.city = city;
this.state = state;
this.country = country;
this.zipCode = zipCode;
this.addressType = addressType;
}
}
and
AddressType.java
package com.springtesting.model;
import lombok.Data;
import lombok.NonNull;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address_type")
public class AddressType
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "type")
@NonNull
private String type;
public AddressType()
{
}
public AddressType(String type)
{
}
}
when I start the Spring Boot application, I see extra column (address_id)
Table Structure on Mysql
java spring spring-data-jpa spring-data
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have SpringBoot project with Spring Data. Extra column being created when I use the same column name for 2 tables mapped using ManyToOne Relation. I have Address table with column name 'id' and AddressType table with column 'id'. When I start the Spring Boot application with this, I see an extra column (address_id) created on Address table.
Address.java
package com.springtesting.model;
import lombok.Data;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address")
public class Address
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "street_name")
private String streetName;
@Column(name = "apartment")
private String apartment;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@Column(name = "zip_code")
private String zipCode;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_type_id")
private AddressType addressType;
public Address()
{
}
public Address(String streetName, String apartment, String city, String state, String country, String zipCode, AddressType addressType)
{
this.streetName = streetName;
this.apartment = apartment;
this.city = city;
this.state = state;
this.country = country;
this.zipCode = zipCode;
this.addressType = addressType;
}
}
and
AddressType.java
package com.springtesting.model;
import lombok.Data;
import lombok.NonNull;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address_type")
public class AddressType
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "type")
@NonNull
private String type;
public AddressType()
{
}
public AddressType(String type)
{
}
}
when I start the Spring Boot application, I see extra column (address_id)
Table Structure on Mysql
java spring spring-data-jpa spring-data
I have SpringBoot project with Spring Data. Extra column being created when I use the same column name for 2 tables mapped using ManyToOne Relation. I have Address table with column name 'id' and AddressType table with column 'id'. When I start the Spring Boot application with this, I see an extra column (address_id) created on Address table.
Address.java
package com.springtesting.model;
import lombok.Data;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address")
public class Address
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "street_name")
private String streetName;
@Column(name = "apartment")
private String apartment;
@Column(name = "city")
private String city;
@Column(name = "state")
private String state;
@Column(name = "country")
private String country;
@Column(name = "zip_code")
private String zipCode;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "address_type_id")
private AddressType addressType;
public Address()
{
}
public Address(String streetName, String apartment, String city, String state, String country, String zipCode, AddressType addressType)
{
this.streetName = streetName;
this.apartment = apartment;
this.city = city;
this.state = state;
this.country = country;
this.zipCode = zipCode;
this.addressType = addressType;
}
}
and
AddressType.java
package com.springtesting.model;
import lombok.Data;
import lombok.NonNull;
import javax.persistence.*;
@Entity
@Data
@Table(name = "address_type")
public class AddressType
{
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "id")
private Long id;
@Column(name = "type")
@NonNull
private String type;
public AddressType()
{
}
public AddressType(String type)
{
}
}
when I start the Spring Boot application, I see extra column (address_id)
Table Structure on Mysql
java spring spring-data-jpa spring-data
java spring spring-data-jpa spring-data
edited Nov 14 at 22:35
asked Nov 14 at 21:24
Jadda
211114
211114
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
I'm not sure this will fix your issue, but try changing the @GeneratedValue(strategy = GenerationType.AUTO)
to @GeneratedValue(strategy = GenerationType.IDENTITY)
, or give it a "native" GenericGenerator
, as discussed here. Apparently GenerationType.AUTO
does not play nice with MySQL from Hibernate 5+.
A couple of other notes:
You probably don't want to use Lombok's
@NonNull
, instead just use@Column(name = "type", nullable = false)
. In fact if the POJO is created through the default constructor, Lombok's@NonNull
wouldn't do anything anyway since it's annotated over a field.You don't need the
cascade = CascadeType.ALL
above the AddressType since you probably don't want to accidentally update/delete/or create newAddressType
s through theAddress
entity. Just annotating it@ManyToOne
should be enough.
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
I'm not sure this will fix your issue, but try changing the @GeneratedValue(strategy = GenerationType.AUTO)
to @GeneratedValue(strategy = GenerationType.IDENTITY)
, or give it a "native" GenericGenerator
, as discussed here. Apparently GenerationType.AUTO
does not play nice with MySQL from Hibernate 5+.
A couple of other notes:
You probably don't want to use Lombok's
@NonNull
, instead just use@Column(name = "type", nullable = false)
. In fact if the POJO is created through the default constructor, Lombok's@NonNull
wouldn't do anything anyway since it's annotated over a field.You don't need the
cascade = CascadeType.ALL
above the AddressType since you probably don't want to accidentally update/delete/or create newAddressType
s through theAddress
entity. Just annotating it@ManyToOne
should be enough.
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
add a comment |
up vote
0
down vote
I'm not sure this will fix your issue, but try changing the @GeneratedValue(strategy = GenerationType.AUTO)
to @GeneratedValue(strategy = GenerationType.IDENTITY)
, or give it a "native" GenericGenerator
, as discussed here. Apparently GenerationType.AUTO
does not play nice with MySQL from Hibernate 5+.
A couple of other notes:
You probably don't want to use Lombok's
@NonNull
, instead just use@Column(name = "type", nullable = false)
. In fact if the POJO is created through the default constructor, Lombok's@NonNull
wouldn't do anything anyway since it's annotated over a field.You don't need the
cascade = CascadeType.ALL
above the AddressType since you probably don't want to accidentally update/delete/or create newAddressType
s through theAddress
entity. Just annotating it@ManyToOne
should be enough.
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
add a comment |
up vote
0
down vote
up vote
0
down vote
I'm not sure this will fix your issue, but try changing the @GeneratedValue(strategy = GenerationType.AUTO)
to @GeneratedValue(strategy = GenerationType.IDENTITY)
, or give it a "native" GenericGenerator
, as discussed here. Apparently GenerationType.AUTO
does not play nice with MySQL from Hibernate 5+.
A couple of other notes:
You probably don't want to use Lombok's
@NonNull
, instead just use@Column(name = "type", nullable = false)
. In fact if the POJO is created through the default constructor, Lombok's@NonNull
wouldn't do anything anyway since it's annotated over a field.You don't need the
cascade = CascadeType.ALL
above the AddressType since you probably don't want to accidentally update/delete/or create newAddressType
s through theAddress
entity. Just annotating it@ManyToOne
should be enough.
I'm not sure this will fix your issue, but try changing the @GeneratedValue(strategy = GenerationType.AUTO)
to @GeneratedValue(strategy = GenerationType.IDENTITY)
, or give it a "native" GenericGenerator
, as discussed here. Apparently GenerationType.AUTO
does not play nice with MySQL from Hibernate 5+.
A couple of other notes:
You probably don't want to use Lombok's
@NonNull
, instead just use@Column(name = "type", nullable = false)
. In fact if the POJO is created through the default constructor, Lombok's@NonNull
wouldn't do anything anyway since it's annotated over a field.You don't need the
cascade = CascadeType.ALL
above the AddressType since you probably don't want to accidentally update/delete/or create newAddressType
s through theAddress
entity. Just annotating it@ManyToOne
should be enough.
answered Nov 15 at 0:45
dyslexit
162110
162110
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
add a comment |
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
Your suggestions did not solve my issue.
– Jadda
Nov 15 at 3:23
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53308936%2fextra-column-being-created-when-i-use-same-column-name-for-two-different-tables%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown