spring data jpa, share entities over projects, unmapped entity
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}
I have a couple of services who use the same form of table to store translations, so I moved the translation entity into a shared project and try to have a unidirectional @OneToMany mapping on that entity. However I keep getting following exception
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.examples.blog.Post.translations[com.examples.shared.domain.Translation]
my Post class looks like this
package com.examples.blog.domain;
import com.examples.shared.domain.Translation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Data
@Entity
@Table(name = "POSTS")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Currency implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
private String author;
@Embedded
private Source source;
@OneToMany(cascade = CascadeType.ALL,
orphanRemoval = true)
@JoinColumn(name = "entity_id")
List<Translation> translations;
}
and my shared Translation class looks like this:
package com.examples.shared.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "TRANSLATIONS")
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class Translation implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@Column(name = "language")
private String language;
@Column(name="translation")
private String translation;
@Column(name="entity_id")
@ManyToOne
private String entityId;
}
Anyone can help me figure out what I'm doing wrong here?
spring hibernate jpa
add a comment |
I have a couple of services who use the same form of table to store translations, so I moved the translation entity into a shared project and try to have a unidirectional @OneToMany mapping on that entity. However I keep getting following exception
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.examples.blog.Post.translations[com.examples.shared.domain.Translation]
my Post class looks like this
package com.examples.blog.domain;
import com.examples.shared.domain.Translation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Data
@Entity
@Table(name = "POSTS")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Currency implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
private String author;
@Embedded
private Source source;
@OneToMany(cascade = CascadeType.ALL,
orphanRemoval = true)
@JoinColumn(name = "entity_id")
List<Translation> translations;
}
and my shared Translation class looks like this:
package com.examples.shared.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "TRANSLATIONS")
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class Translation implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@Column(name = "language")
private String language;
@Column(name="translation")
private String translation;
@Column(name="entity_id")
@ManyToOne
private String entityId;
}
Anyone can help me figure out what I'm doing wrong here?
spring hibernate jpa
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31
add a comment |
I have a couple of services who use the same form of table to store translations, so I moved the translation entity into a shared project and try to have a unidirectional @OneToMany mapping on that entity. However I keep getting following exception
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.examples.blog.Post.translations[com.examples.shared.domain.Translation]
my Post class looks like this
package com.examples.blog.domain;
import com.examples.shared.domain.Translation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Data
@Entity
@Table(name = "POSTS")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Currency implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
private String author;
@Embedded
private Source source;
@OneToMany(cascade = CascadeType.ALL,
orphanRemoval = true)
@JoinColumn(name = "entity_id")
List<Translation> translations;
}
and my shared Translation class looks like this:
package com.examples.shared.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "TRANSLATIONS")
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class Translation implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@Column(name = "language")
private String language;
@Column(name="translation")
private String translation;
@Column(name="entity_id")
@ManyToOne
private String entityId;
}
Anyone can help me figure out what I'm doing wrong here?
spring hibernate jpa
I have a couple of services who use the same form of table to store translations, so I moved the translation entity into a shared project and try to have a unidirectional @OneToMany mapping on that entity. However I keep getting following exception
Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.examples.blog.Post.translations[com.examples.shared.domain.Translation]
my Post class looks like this
package com.examples.blog.domain;
import com.examples.shared.domain.Translation;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
import java.util.List;
@Data
@Entity
@Table(name = "POSTS")
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class Currency implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
private String author;
@Embedded
private Source source;
@OneToMany(cascade = CascadeType.ALL,
orphanRemoval = true)
@JoinColumn(name = "entity_id")
List<Translation> translations;
}
and my shared Translation class looks like this:
package com.examples.shared.domain;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.annotations.GenericGenerator;
import javax.persistence.*;
import java.io.Serializable;
@Entity
@Table(name = "TRANSLATIONS")
@Data
@Builder(toBuilder = true)
@NoArgsConstructor
@AllArgsConstructor
public class Translation implements Serializable {
@Id
@GeneratedValue(generator = "system-uuid")
@GenericGenerator(name = "system-uuid", strategy = "uuid")
private String id;
@Column(name = "language")
private String language;
@Column(name="translation")
private String translation;
@Column(name="entity_id")
@ManyToOne
private String entityId;
}
Anyone can help me figure out what I'm doing wrong here?
spring hibernate jpa
spring hibernate jpa
asked Nov 16 '18 at 12:24
J.PipJ.Pip
2,76572240
2,76572240
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31
add a comment |
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31
add a comment |
3 Answers
3
active
oldest
votes
Seems like hibernate is not aware of com.examples.shared.domain.Translation
entity.
You should provide hibernate a list of classes or packages where it should look for @Entities
classes.
If you use Spring Boot
use @EntityScan(basePackages="com.examples.shared.domain")
.
If you use Spring
+ Hibernate
integration, use LocalContainerEntityManagerFactoryBean.setPackagesToScan("com.examples.shared.domain")
If you use plain hibernate, add a corresponding entry to persistence.xml or hibernate.cfg.xml:
<hibernate-configuration>
....
<mapping class="com.examples.shared.domain.Translation"/>
</session-factory>
</hibernate-configuration>
Or for java config see docs: http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap-bootstrap-native-registry-MetadataSources-example
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
add a comment |
Below statement is causing you issue:
@Column(name="entity_id")
@ManyToOne
private String entityId;
Instead of String entityId
, you should mention relationship with a valid entity class. Here entityId
is of type String
which is obviously not a declared entity.
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
add a comment |
You are mapping 2nd class in onetomany in one class but mapping manytoone to a string instead of class.
Change
@ManyToOne
private String entityId;
to
@ManyToOne
private Currency entityId;
See this
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
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%2f53337878%2fspring-data-jpa-share-entities-over-projects-unmapped-entity%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Seems like hibernate is not aware of com.examples.shared.domain.Translation
entity.
You should provide hibernate a list of classes or packages where it should look for @Entities
classes.
If you use Spring Boot
use @EntityScan(basePackages="com.examples.shared.domain")
.
If you use Spring
+ Hibernate
integration, use LocalContainerEntityManagerFactoryBean.setPackagesToScan("com.examples.shared.domain")
If you use plain hibernate, add a corresponding entry to persistence.xml or hibernate.cfg.xml:
<hibernate-configuration>
....
<mapping class="com.examples.shared.domain.Translation"/>
</session-factory>
</hibernate-configuration>
Or for java config see docs: http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap-bootstrap-native-registry-MetadataSources-example
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
add a comment |
Seems like hibernate is not aware of com.examples.shared.domain.Translation
entity.
You should provide hibernate a list of classes or packages where it should look for @Entities
classes.
If you use Spring Boot
use @EntityScan(basePackages="com.examples.shared.domain")
.
If you use Spring
+ Hibernate
integration, use LocalContainerEntityManagerFactoryBean.setPackagesToScan("com.examples.shared.domain")
If you use plain hibernate, add a corresponding entry to persistence.xml or hibernate.cfg.xml:
<hibernate-configuration>
....
<mapping class="com.examples.shared.domain.Translation"/>
</session-factory>
</hibernate-configuration>
Or for java config see docs: http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap-bootstrap-native-registry-MetadataSources-example
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
add a comment |
Seems like hibernate is not aware of com.examples.shared.domain.Translation
entity.
You should provide hibernate a list of classes or packages where it should look for @Entities
classes.
If you use Spring Boot
use @EntityScan(basePackages="com.examples.shared.domain")
.
If you use Spring
+ Hibernate
integration, use LocalContainerEntityManagerFactoryBean.setPackagesToScan("com.examples.shared.domain")
If you use plain hibernate, add a corresponding entry to persistence.xml or hibernate.cfg.xml:
<hibernate-configuration>
....
<mapping class="com.examples.shared.domain.Translation"/>
</session-factory>
</hibernate-configuration>
Or for java config see docs: http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap-bootstrap-native-registry-MetadataSources-example
Seems like hibernate is not aware of com.examples.shared.domain.Translation
entity.
You should provide hibernate a list of classes or packages where it should look for @Entities
classes.
If you use Spring Boot
use @EntityScan(basePackages="com.examples.shared.domain")
.
If you use Spring
+ Hibernate
integration, use LocalContainerEntityManagerFactoryBean.setPackagesToScan("com.examples.shared.domain")
If you use plain hibernate, add a corresponding entry to persistence.xml or hibernate.cfg.xml:
<hibernate-configuration>
....
<mapping class="com.examples.shared.domain.Translation"/>
</session-factory>
</hibernate-configuration>
Or for java config see docs: http://docs.jboss.org/hibernate/orm/5.3/userguide/html_single/Hibernate_User_Guide.html#bootstrap-bootstrap-native-registry-MetadataSources-example
edited Nov 22 '18 at 9:27
answered Nov 16 '18 at 12:52
StasKolodyukStasKolodyuk
1,6261527
1,6261527
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
add a comment |
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
thank you this did the trick!
– J.Pip
Nov 16 '18 at 12:55
add a comment |
Below statement is causing you issue:
@Column(name="entity_id")
@ManyToOne
private String entityId;
Instead of String entityId
, you should mention relationship with a valid entity class. Here entityId
is of type String
which is obviously not a declared entity.
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
add a comment |
Below statement is causing you issue:
@Column(name="entity_id")
@ManyToOne
private String entityId;
Instead of String entityId
, you should mention relationship with a valid entity class. Here entityId
is of type String
which is obviously not a declared entity.
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
add a comment |
Below statement is causing you issue:
@Column(name="entity_id")
@ManyToOne
private String entityId;
Instead of String entityId
, you should mention relationship with a valid entity class. Here entityId
is of type String
which is obviously not a declared entity.
Below statement is causing you issue:
@Column(name="entity_id")
@ManyToOne
private String entityId;
Instead of String entityId
, you should mention relationship with a valid entity class. Here entityId
is of type String
which is obviously not a declared entity.
answered Nov 16 '18 at 12:34
codeLovercodeLover
2,2551620
2,2551620
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
add a comment |
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
well as stated above the Translation Entity will be shared over many different services, so this time it's Post, next time it's MenuEntry, ... so how would I be able to do it like that?
– J.Pip
Nov 16 '18 at 12:38
1
1
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
In that case the simplest way would be to remove @ManytoOne annotation from entityid field
– codeLover
Nov 16 '18 at 12:45
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
tried it and it's still the same exception
– J.Pip
Nov 16 '18 at 12:48
add a comment |
You are mapping 2nd class in onetomany in one class but mapping manytoone to a string instead of class.
Change
@ManyToOne
private String entityId;
to
@ManyToOne
private Currency entityId;
See this
add a comment |
You are mapping 2nd class in onetomany in one class but mapping manytoone to a string instead of class.
Change
@ManyToOne
private String entityId;
to
@ManyToOne
private Currency entityId;
See this
add a comment |
You are mapping 2nd class in onetomany in one class but mapping manytoone to a string instead of class.
Change
@ManyToOne
private String entityId;
to
@ManyToOne
private Currency entityId;
See this
You are mapping 2nd class in onetomany in one class but mapping manytoone to a string instead of class.
Change
@ManyToOne
private String entityId;
to
@ManyToOne
private Currency entityId;
See this
answered Nov 16 '18 at 12:34
AlienAlien
5,50331128
5,50331128
add a comment |
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.
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%2f53337878%2fspring-data-jpa-share-entities-over-projects-unmapped-entity%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
I also have added the packages to my basePackages @EnableJpaRepositories(basePackages = {"com.examples"})
– J.Pip
Nov 16 '18 at 12:31